فهرست منبع

Ticket #4575 - Events: Enhancements. Point 4.

AntonLV 2 سال پیش
والد
کامیت
def2cb7a77

+ 8 - 4
inc/classes/BxDolLabel.php

@@ -40,10 +40,14 @@ class BxDolLabel extends BxDolFactory implements iBxDolSingleton
 
     public function actionSelectLabels()
     {
-        return echoJson($this->selectLabels(array(
-            'name' => bx_process_input(bx_get('name')),
-            'list' => bx_process_input(bx_get('value'))
-        )));
+        $sName = bx_process_input(bx_get('name'));
+        $aValue = bx_process_input(bx_get('value'));
+
+        return echoJson($this->selectLabels([
+            'name' => $sName,
+            'list' => $aValue,
+            'list_context' => $aValue,
+        ]));
     }
 
     public function actionLabelsList()

+ 5 - 3
install/sql/system.sql

@@ -3794,6 +3794,7 @@ INSERT INTO `sys_form_inputs` (`object`, `module`, `name`, `value`, `values`, `c
 ('sys_labels', 'system', 'action', '', '', 0, 'hidden', '_sys_form_labels_input_caption_system_action', '', '', 0, 0, 0, '', '', '', '', '', '', '', '', 0, 0),
 ('sys_labels', 'system', 'search', '', '', 0, 'custom', '_sys_form_labels_input_caption_system_search', '_sys_form_labels_input_caption_search', '', 0, 0, 0, '', '', '', '', '', '', '', '', 0, 0),
 ('sys_labels', 'system', 'list', '', '', 0, 'custom', '_sys_form_labels_input_caption_system_list', '_sys_form_labels_input_caption_list', '', 0, 0, 0, '', '', '', '', '', '', '', '', 0, 0),
+('sys_labels', 'system', 'list_context', '', '', 0, 'custom', '_sys_form_labels_input_caption_system_list_context', '_sys_form_labels_input_caption_list_context', '', 0, 0, 0, '', '', '', '', '', '', '', '', 0, 0),
 ('sys_labels', 'system', 'controls', '', 'do_submit,do_cancel', 0, 'input_set', '', '', '', 0, 0, 0, '', '', '', '', '', '', '', '', 0, 0),
 ('sys_labels', 'system', 'do_submit', '_sys_form_labels_input_caption_do_submit', '', 0, 'submit', '_sys_form_labels_input_caption_system_do_submit', '', '', 0, 0, 0, '', '', '', '', '', '', '', '', 0, 0),
 ('sys_labels', 'system', 'do_cancel', '_sys_form_labels_input_caption_do_cancel', '', 0, 'button', '_sys_form_labels_input_caption_system_do_cancel', '', '', 0, 0, 0, 'a:2:{s:7:"onclick";s:45:"$(''.bx-popup-applied:visible'').dolPopupHide()";s:5:"class";s:22:"bx-def-margin-sec-left";}', '', '', '', '', '', '', '', 0, 0),
@@ -4024,9 +4025,10 @@ INSERT INTO `sys_form_display_inputs` (`display_name`, `input_name`, `visible_fo
 ('sys_labels_select', 'action', 2147483647, 1, 2),
 ('sys_labels_select', 'search', 2147483647, 1, 3),
 ('sys_labels_select', 'list', 2147483647, 1, 4),
-('sys_labels_select', 'controls', 2147483647, 1, 5),
-('sys_labels_select', 'do_submit', 2147483647, 1, 6),
-('sys_labels_select', 'do_cancel', 2147483647, 1, 7),
+('sys_labels_select', 'list_context', 2147483647, 1, 5),
+('sys_labels_select', 'controls', 2147483647, 1, 6),
+('sys_labels_select', 'do_submit', 2147483647, 1, 7),
+('sys_labels_select', 'do_cancel', 2147483647, 1, 8),
 
 ('sys_wiki_edit', 'block_id', 2147483647, 1, 1),
 ('sys_wiki_edit', 'language', 2147483647, 1, 2),

+ 6 - 1
modules/base/profile/classes/BxBaseModProfileModule.php

@@ -252,10 +252,15 @@ class BxBaseModProfileModule extends BxBaseModGeneralModule implements iBxDolCon
         return MsgBox(_t('_sys_access_denied_to_private_content'));
     }
     
-	public function serviceGetContentInfoById($iContentId)
+    public function serviceGetContentInfoById($iContentId)
     {
         return $this->_oDb->getContentInfoById((int)$iContentId);
     }
+    
+    public function serviceGetContentInfoByProfileId($iProfileId)
+    {
+        return $this->_oDb->getContentInfoByProfileId((int)$iProfileId);
+    }
 
     public function serviceGetMenuAddonManageTools()
     {

+ 3 - 1
modules/boonex/english/data/langs/system/en.xml

@@ -2568,7 +2568,9 @@ If it is not enabled then please consider implement this optimization, since it
         <string name="_sys_form_labels_input_caption_system_search"><![CDATA[Search]]></string>
         <string name="_sys_form_labels_input_caption_search"><![CDATA[Search]]></string>
         <string name="_sys_form_labels_input_caption_system_list"><![CDATA[List]]></string>
-        <string name="_sys_form_labels_input_caption_list"><![CDATA[or select]]></string>
+        <string name="_sys_form_labels_input_caption_list"><![CDATA[or select from general labels]]></string>
+        <string name="_sys_form_labels_input_caption_system_list_context"><![CDATA[List from contexts]]></string>
+        <string name="_sys_form_labels_input_caption_list_context"><![CDATA[from contexts' labels]]></string>
         <string name="_sys_form_labels_input_caption_do_submit"><![CDATA[Submit]]></string>
         <string name="_sys_form_labels_input_caption_system_do_submit"><![CDATA[Submit]]></string>
         <string name="_sys_form_labels_input_caption_do_cancel"><![CDATA[Cancel]]></string>

+ 2 - 0
modules/boonex/events/install/langs/en.xml

@@ -49,6 +49,8 @@
     <string name="_bx_events_form_profile_input_sys_event_cat"><![CDATA[Category]]></string>
     <string name="_bx_events_form_profile_input_event_cat"><![CDATA[Category]]></string>
     <string name="_bx_events_form_profile_input_event_cat_err"><![CDATA[Category field is mandatory]]></string>
+    <string name="_bx_events_form_profile_input_sys_hashtag"><![CDATA[Main hashtag]]></string>
+    <string name="_bx_events_form_profile_input_hashtag"><![CDATA[Main hashtag]]></string>
     <string name="_bx_events_form_profile_input_sys_picture"><![CDATA[Event Picture]]></string>
     <string name="_bx_events_form_profile_input_picture"><![CDATA[Upload New Event Picture]]></string>
     <string name="_bx_events_form_profile_input_picture_err"><![CDATA[Event picture is mandatory.]]></string>

+ 2 - 0
modules/boonex/events/install/sql/install.sql

@@ -14,6 +14,7 @@ CREATE TABLE IF NOT EXISTS `bx_events_data` (
   `event_name` varchar(255) NOT NULL,
   `event_cat` int(11) NOT NULL,
   `event_desc` text NOT NULL,
+  `hashtag` varchar(32) NOT NULL,
   `date_start` int(11) DEFAULT NULL,
   `date_end` int(11) DEFAULT NULL,
   `timezone` varchar(255) DEFAULT NULL,
@@ -406,6 +407,7 @@ INSERT INTO `sys_form_inputs`(`object`, `module`, `name`, `value`, `values`, `ch
 ('bx_event', 'bx_events', 'reminder', '', '#!bx_events_reminder', 0, 'select', '_bx_events_form_profile_input_sys_reminder', '_bx_events_form_profile_input_reminder', '', 0, 0, 0, '', '', '', '', '', '', 'Int', '', 1, 1),
 ('bx_event', 'bx_events', 'event_desc', '', '', 0, 'textarea', '_bx_events_form_profile_input_sys_event_desc', '_bx_events_form_profile_input_event_desc', '', 0, 0, 2, '', '', '', '', '', '', 'XssHtml', '', 1, 1),
 ('bx_event', 'bx_events', 'event_name', '', '', 0, 'text', '_bx_events_form_profile_input_sys_event_name', '_bx_events_form_profile_input_event_name', '', 1, 0, 0, '', '', '', 'Length', 'a:2:{s:3:"min";i:1;s:3:"max";i:80;}', '_bx_events_form_profile_input_event_name_err', 'Xss', '', 1, 0),
+('bx_event', 'bx_events', 'hashtag', '', '', 0, 'text', '_bx_events_form_profile_input_sys_hashtag', '_bx_events_form_profile_input_hashtag', '', 1, 0, 0, '', '', '', '', '', '', 'Xss', '', 1, 0),
 ('bx_event', 'bx_events', 'initial_members', '', '', 0, 'custom', '_bx_events_form_profile_input_sys_initial_members', '_bx_events_form_profile_input_initial_members', '', 0, 0, 0, '', '', '', '', '', '', '', '', 1, 1),
 ('bx_event', 'bx_events', 'join_confirmation', 1, '', 0, 'switcher', '_bx_events_form_profile_input_sys_join_confirm', '_bx_events_form_profile_input_join_confirm', '', 0, 0, 0, '', '', '', '', '', '', 'Xss', '', 1, 0),
 ('bx_event', 'bx_events', 'picture', 'a:1:{i:0;s:22:\"bx_events_picture_crop\";}', 'a:1:{s:22:\"bx_events_picture_crop\";s:24:\"_sys_uploader_crop_title\";}', 0, 'files', '_bx_events_form_profile_input_sys_picture', '_bx_events_form_profile_input_picture', '', 0, 0, 0, '', '', '', '', '', '_bx_events_form_profile_input_picture_err', '', '', 1, 0),

+ 2 - 0
modules/boonex/russian/data/langs/bx_events/ru.xml

@@ -48,6 +48,8 @@
     <string name="_bx_events_form_profile_input_sys_event_cat"><![CDATA[Категория]]></string>
     <string name="_bx_events_form_profile_input_event_cat"><![CDATA[Категория]]></string>
     <string name="_bx_events_form_profile_input_event_cat_err"><![CDATA[Поле категории обязатаельное]]></string>
+    <string name="_bx_events_form_profile_input_sys_hashtag"><![CDATA[Основной хештег]]></string>
+    <string name="_bx_events_form_profile_input_hashtag"><![CDATA[Основной хештег]]></string>
     <string name="_bx_events_form_profile_input_sys_picture"><![CDATA[Картинка события]]></string>
     <string name="_bx_events_form_profile_input_picture"><![CDATA[Загрузить новую картинку события]]></string>
     <string name="_bx_events_form_profile_input_picture_err"><![CDATA[Картинка события обязательна]]></string>

+ 3 - 1
modules/boonex/russian/data/langs/system/ru.xml

@@ -2539,7 +2539,9 @@
         <string name="_sys_form_labels_input_caption_system_search"><![CDATA[Поиск]]></string>
         <string name="_sys_form_labels_input_caption_search"><![CDATA[Найти]]></string>
         <string name="_sys_form_labels_input_caption_system_list"><![CDATA[Список]]></string>
-        <string name="_sys_form_labels_input_caption_list"><![CDATA[или выбрать]]></string>
+        <string name="_sys_form_labels_input_caption_list"><![CDATA[или выбрать из общих меток]]></string>
+        <string name="_sys_form_labels_input_caption_system_list_context"><![CDATA[Список из контекстов]]></string>
+        <string name="_sys_form_labels_input_caption_list_context"><![CDATA[из меток контекстов]]></string>
         <string name="_sys_form_labels_input_caption_do_submit"><![CDATA[Выполнить]]></string>
         <string name="_sys_form_labels_input_caption_system_do_submit"><![CDATA[Выполнить]]></string>
         <string name="_sys_form_labels_input_caption_do_cancel"><![CDATA[Отмена]]></string>

+ 1 - 1
template/css/label.css

@@ -68,7 +68,7 @@
 
 /*-- Labels Popup List and Labels Browse  --*/
 .sys-labels-list-cnt {
-    max-height: 20rem;
+    max-height: 8.5rem;
     overflow-y: auto;
 }
 .sys-labels-level {

+ 73 - 0
template/scripts/BxBaseLabel.php

@@ -98,6 +98,9 @@ class BxBaseLabel extends BxDolLabel
 
             if(($aLabelsList = $oForm->getCleanValue('list')) !== false)
                 $aLabels = array_merge($aLabels, $aLabelsList);
+            
+            if(($aLabelsList = $oForm->getCleanValue('list_context')) !== false)
+                $aLabels = array_merge($aLabels, $aLabelsList);
 
             $aLabels = array_unique($aLabels);
 
@@ -290,6 +293,76 @@ class BxBaseLabel extends BxDolLabel
             'bx_repeat:labels' => $aTmplVarsLabels
         ));
     }
+    
+    /**
+     * Get "Contexts' List" custom form element.
+     */
+    public function getLabelsListContext(&$aInput, &$oForm)
+    {
+        $iProfileId = bx_get_logged_profile_id();
+        $sJsObject = $this->getJsObjectName();
+
+        $bInputValue = !empty($aInput['value']) && is_array($aInput['value']);
+
+        $aCheckbox = $aInput;
+        $aCheckbox['type'] = 'checkbox';
+        $aCheckbox['name'] .= '[]';
+        
+        $aModules = bx_srv('system', 'get_modules_by_type', ['context']);
+
+        $aTmplVarsLabels = [];
+        foreach($aModules as $aModule) {
+            if(bx_srv($aModule['name'], 'act_as_profile'))
+                continue;
+
+            $aContextPids = bx_srv($aModule['name'], 'get_participating_profiles', [$iProfileId]);
+            if(empty($aContextPids) || !is_array($aContextPids))
+                continue;
+
+            foreach($aContextPids as $iContextPid) {
+                $aContextInfo = bx_srv($aModule['name'], 'get_content_info_by_profile_id', [$iContextPid]);
+                if(empty($aContextInfo['hashtag']))
+                    continue;
+
+                $sLabelValue = $aContextInfo['hashtag'];
+
+                $sHtmlId = 'sys_label_' . $sLabelValue;
+                $bChecked = $bInputValue && in_array($sLabelValue, $aInput['value']);
+
+                $aCheckbox['value'] = $sLabelValue;
+                $aCheckbox['checked'] = $bChecked ? 1 : 0;
+                $aCheckbox['attrs']['id'] = $sHtmlId;
+
+                $aTmplVarsLabels[] = [
+                    'checkbox' => $oForm->genInput($aCheckbox),
+                    'html_id_label' => $sHtmlId,
+                    'title' => $sLabelValue,
+                    'title_attr' => bx_html_attribute($sLabelValue),
+                    'bx_if:show_sublist_link' => [
+                        'condition' => false,
+                        'content' => []
+                    ],
+                    'bx_if:show_sublist' => [
+                        'condition' => false,
+                        'content' => [],
+                    ]
+                ];
+            }
+        }
+
+        $sContent = $this->_oTemplate->parseHtmlByName('label_select_list_level.html', [
+            'level' => 0,
+            'bx_repeat:labels' => $aTmplVarsLabels
+        ]);
+
+        if(empty($sContent))
+            $sContent = MsgBox(_t('_Empty'));
+
+        return $this->_oTemplate->parseHtmlByName('label_select_list.html', [
+            'content' => $sContent
+        ]);
+    }
+    
 
     public function addCssJs($sType, $bDynamicMode = false)
     {

+ 6 - 1
template/scripts/BxBaseLabelForm.php

@@ -42,11 +42,16 @@ class BxBaseLabelForm extends BxTemplFormView
 
         return $this->genCustomInputUsernamesSuggestions($aInput);
     }
-    
+
     protected function genCustomInputList($aInput)
     {
         return $this->_oObject->getLabelsList($aInput, $this);
     }
+
+    protected function genCustomInputListContext($aInput)
+    {
+        return $this->_oObject->getLabelsListContext($aInput, $this);
+    }
 }
 
 /** @} */