MODULE = 'bx_convos'; parent::__construct($aInfo, $oTemplate); $aJs = array ( 'jquery.ui.all.min.js', // TODO: remake by adding individual files, instead of all ); BxDolTemplate::getInstance()->addJs($aJs); } public function insert ($aValsToAdd = array(), $isIgnore = false) { $aValsToAdd['last_reply_timestamp'] = time(); $aValsToAdd['last_reply_profile_id'] = bx_get_logged_profile_id(); $iContentId = parent::insert ($aValsToAdd, $isIgnore); if (!$iContentId) return 0; bx_import('BxDolProfile'); // check for spam $bSpam = false; bx_alert('system', 'check_spam', 0, getLoggedId(), array('is_spam' => &$bSpam, 'content' => $this->getCleanValue('text'), 'where' => $this->MODULE)); $iFolder = $bSpam ? BX_CNV_FOLDER_SPAM : BX_CNV_FOLDER_INBOX; // place conversation to "inbox" (or "spam" - in case of spam) folder $aRecipients = array_unique(array_merge($this->getCleanValue('recipients'), array(bx_get_logged_profile_id())), SORT_NUMERIC); foreach ($aRecipients as $iProfile) { $oProfile = BxDolProfile::getInstance($iProfile); if ($oProfile) $this->_oModule->_oDb->conversationToFolder($iContentId, $iFolder, $oProfile->id()); } return $iContentId; } protected function genCustomInputRecipients ($aInput) { $sVals = ''; if (!empty($aInput['value']) && is_array($aInput['value'])) { foreach ($aInput['value'] as $sVal) { $sVals .= '' . BxDolProfile::getInstance($sVal)->getDisplayName() . ''; } $sVals = trim($sVals, ','); } $sId = $aInput['name'] . time(); $sPlaceholderText = bx_html_attribute("Type name here...", BX_ESCAPE_STR_QUOTE); // TODO: lang key $sUrlGetRecipients = BX_DOL_URL_ROOT . "modules/?r=convos/ajax_get_recipients"; return << $(function() { $('#{$sId} input[type=text]').autocomplete({ source: "{$sUrlGetRecipients}", select: function(e, ui) { $(this).val(ui.item.label); $(this).trigger('superselect', ui.item); e.preventDefault(); } }); $('#{$sId} input[type=text]').on('superselect', function(e, item) { if ('undefined' != typeof(item)) $(this).before(''+ item.label +''); this.value = ''; }).on('keydown', function(e) { // if: comma,enter (delimit more keyCodes with | pipe) if (/(13)/.test(e.which)) e.preventDefault(); }); $('#{$sId}').on('click', 'span', function() { $(this).remove(); }); });
{$sVals}
EOS; } } /** @} */