- /**
- * BlockTwitterItem block resides inside a scene or timeline
- * @class BlockTwitterItem
- * @extends Block
- * @constructor
- * @param {string} i_placement location where objects resides which can be scene or timeline
- * @param {string} i_campaign_timeline_chanel_player_id required and set as block id when block is inserted onto timeline_channel
- * @return {Object} Block instance
- */
- define(['jquery', 'backbone', 'Block'], function ($, Backbone, Block) {
-
- var BlockTwitterItem = Block.extend({
-
- /**
- Constructor
- @method initialize
- **/
- constructor: function (options) {
- var self = this;
- self.m_blockType = 4505;
- _.extend(options, {blockType: self.m_blockType})
- Block.prototype.constructor.call(this, options);
- self._initSubPanel(Elements.BLOCK_TWITTER_ITEM_COMMON_PROPERTIES);
- self._listenItemSelectDropDownChange();
- self._listenFontSelectionChange();
- self.m_twitterFontSelector = self.m_blockProperty.getTwitterItemFontSelector();
- },
-
- /**
- Load up property values in the common panel
- @method _populate
- @return none
- **/
- _populate: function () {
- var self = this;
- var domPlayerData = self._getBlockPlayerData();
- var xSnippet = $(domPlayerData).find('XmlItem');
- var fieldType = $(xSnippet).attr('fieldType');
- var label = fieldType == 'resource' ? $(Elements.BOOTBOX_PROFILE_IMAGE).text() : $(Elements.BOOTBOX_LABEL_TEXT).text();
- self._populatePlayItemLabel(label);
- self._populateToggleItemType(fieldType);
- self._populateLabel();
- },
-
- /**
- Listen to selection of twitter item
- @method _listenItemSelectDropDownChange
- **/
- _listenItemSelectDropDownChange: function () {
- var self = this;
- self.m_itemTypeSelect = function (e) {
- if (!self.m_selected)
- return;
- var fieldType = $(e.target).attr('name');
- if (_.isUndefined(fieldType))
- return;
- var listLabel = $(e.target).text();
- var domPlayerData = self._getBlockPlayerData();
- var xSnippet = $(domPlayerData).find('XmlItem');
-
- switch (fieldType) {
- case 'text':
- {
- $(xSnippet).attr('fieldName', 'text');
- $(xSnippet).attr('fieldType', 'text');
- break;
- }
- case 'resource':
- {
- $(xSnippet).attr('fieldName', 'user.profile_image_url');
- $(xSnippet).attr('fieldType', 'resource');
- break;
- }
- }
- self._populatePlayItemLabel(listLabel);
- self._populateToggleItemType(fieldType);
- self._setBlockPlayerData(domPlayerData, BB.CONSTS.NO_NOTIFICATION);
- };
- $(Elements.TWITTER_ITEM_DROPDOWN).on('click', self.m_itemTypeSelect);
- },
-
- /**
- Populate the twitter label (most viewed / custom list)
- @method _populatePlayItemLabel
- @params {String} i_label
- **/
- _populatePlayItemLabel: function (i_label) {
- var self = this;
- $(Elements.TWITTER_ITEMTYPE_SELECT).text(i_label);
- },
-
- /**
- Toggle the view of proper list selection
- @method _populateToggleItemType
- @params {String} i_fieldType
- **/
- _populateToggleItemType: function (i_fieldType) {
- var self = this;
- switch (i_fieldType) {
- case 'text':
- {
- $(Elements.TWITTER_ITEM_LABEL).show();
- break;
- }
- case 'resource':
- {
- $(Elements.TWITTER_ITEM_LABEL).hide();
- break;
- }
- }
- },
-
- /**
- Load up property values in the common panel
- @method _populate
- @return none
- **/
- _populateLabel: function () {
- var self = this;
- var domPlayerData = self._getBlockPlayerData();
- var xSnippetFont = $(domPlayerData).find('Font');
- self.m_twitterFontSelector.setConfig({
- bold: xSnippetFont.attr('fontWeight') == 'bold' ? true : false,
- italic: xSnippetFont.attr('fontStyle') == 'italic' ? true : false,
- underline: xSnippetFont.attr('textDecoration') == 'underline' ? true : false,
- alignment: xSnippetFont.attr('textAlign'),
- font: xSnippetFont.attr('fontFamily'),
- color: BB.lib.colorToHex(BB.lib.decimalToHex(xSnippetFont.attr('fontColor'))),
- size: xSnippetFont.attr('fontSize')
- });
- },
-
- /**
- Listen to changes in font UI selection from Block property and take action on changes
- @method _listenFontSelectionChange
- **/
- _listenFontSelectionChange: function () {
- var self = this;
- BB.comBroker.listenWithNamespace(BB.EVENTS.FONT_SELECTION_CHANGED, self, function (e) {
- if (!self.m_selected || e.caller !== self.m_twitterFontSelector)
- return;
- var config = e.edata;
- var domPlayerData = self._getBlockPlayerData();
- var xSnippetFont = $(domPlayerData).find('Font');
- config.bold == true ? xSnippetFont.attr('fontWeight', 'bold') : xSnippetFont.attr('fontWeight', 'normal');
- config.italic == true ? xSnippetFont.attr('fontStyle', 'italic') : xSnippetFont.attr('fontStyle', 'normal');
- config.underline == true ? xSnippetFont.attr('textDecoration', 'underline') : xSnippetFont.attr('textDecoration', 'none');
- xSnippetFont.attr('fontColor', BB.lib.colorToDecimal(config.color));
- xSnippetFont.attr('fontSize', config.size);
- xSnippetFont.attr('fontFamily', config.font);
- xSnippetFont.attr('textAlign', config.alignment);
- self._setBlockPlayerData(domPlayerData);
- });
- },
-
- /**
- Populate the common block properties panel, called from base class if exists
- @method _loadBlockSpecificProps
- @return none
- **/
- _loadBlockSpecificProps: function () {
- var self = this;
- self._populate();
- this._viewSubPanel(Elements.BLOCK_TWITTER_ITEM_COMMON_PROPERTIES);
- },
-
- /**
- Delete this block
- @method deleteBlock
- @params {Boolean} i_memoryOnly if true only remove from existance but not from msdb
- **/
- deleteBlock: function (i_memoryOnly) {
- var self = this;
- $(Elements.TWITTER_ITEM_DROPDOWN).off('click', self.m_itemTypeSelect);
- BB.comBroker.stopListenWithNamespace(BB.EVENTS.FONT_SELECTION_CHANGED, self);
- self._deleteBlock(i_memoryOnly);
- }
- });
-
- return BlockTwitterItem;
- });
-