From 3d68525abeb2ad5bd0861ca78cd23cd8ad47ad8c Mon Sep 17 00:00:00 2001 From: Alex Date: Mon, 11 Dec 2023 16:58:41 +0100 Subject: [PATCH 1/5] Minor cosmetic change I think the btn-sm was forgotten --- e107_plugins/chatbox_menu/chatbox_menu.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/e107_plugins/chatbox_menu/chatbox_menu.php b/e107_plugins/chatbox_menu/chatbox_menu.php index f66da96663..ffae3e4d1f 100755 --- a/e107_plugins/chatbox_menu/chatbox_menu.php +++ b/e107_plugins/chatbox_menu/chatbox_menu.php @@ -218,7 +218,7 @@ if(!empty($pref['cb_emote']) && !empty($pref['smiley_activate'])) { $texta .= " - + \n"; } From 105cf1aea8d9097215639ce151665beca083cbbf Mon Sep 17 00:00:00 2001 From: Alex Date: Sat, 16 Dec 2023 14:17:10 +0100 Subject: [PATCH 2/5] Problem with plupload/i18n solved See https://github.com/e107inc/e107/issues/4888 --- e107_admin/header.php | 5 ----- e107_admin/image.php | 6 ++++++ 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/e107_admin/header.php b/e107_admin/header.php index 2716938cff..e1566aefdd 100644 --- a/e107_admin/header.php +++ b/e107_admin/header.php @@ -62,12 +62,7 @@ function loadJSAddons() e107::js('footer', '{e_WEB}js/core/admin.jquery.js', 'jquery', 5); // Load all default functions. e107::js('footer', '{e_WEB}js/core/all.jquery.js', 'jquery', 5); // Load all default functions. - $plUpload = 'plupload/i18n/' . e_LAN . '.js'; - if(e_LAN != 'en' && file_exists(e_WEB_JS . $plUpload)) - { - e107::js('footer', e_WEB_JS . $plUpload, 'jquery', 5); - } } diff --git a/e107_admin/image.php b/e107_admin/image.php index 56322e4814..f8b4ab039a 100644 --- a/e107_admin/image.php +++ b/e107_admin/image.php @@ -40,6 +40,12 @@ e107::js('core', 'plupload/plupload.full.min.js', 'jquery', 2); e107::css('core', 'plupload/jquery.plupload.queue/css/jquery.plupload.queue.css', 'jquery'); e107::js('core', 'plupload/jquery.plupload.queue/jquery.plupload.queue.min.js', 'jquery', 2); + $plUpload = 'plupload/i18n/' . e_LAN . '.js'; + + if(e_LAN != 'en' && file_exists(e_WEB_JS . $plUpload)) + { + e107::js('footer', e_WEB_JS . $plUpload, 'jquery', 5); + } e107::js('core', 'core/mediaManager.js', 'jquery',5); // issue #3051 Preview url is wrong when target page is a plugin // Using this variable to check for the plugins directory and replace with empty space in case of... From ee69952d69e66e2d2cc4b53d749ef69d3d9af62a Mon Sep 17 00:00:00 2001 From: camer0n Date: Fri, 26 Jul 2024 11:21:35 -0700 Subject: [PATCH 3/5] Closes #5303 - Rewrite of prefs page to use admin-ui. --- e107_admin/newspost.php | 109 +++++++++++++++++++++++++++++++++------- 1 file changed, 92 insertions(+), 17 deletions(-) diff --git a/e107_admin/newspost.php b/e107_admin/newspost.php index 98469602ab..44f498b715 100644 --- a/e107_admin/newspost.php +++ b/e107_admin/newspost.php @@ -70,7 +70,7 @@ class news_admin extends e_admin_dispatcher 'cat/create' => 'H|H3|H4|H5', 'cat/edit' => 'H|H4', // edit button and inline editing in list mode. 'cat/delete' => 'H|H5', // delete button in list mode. - 'main/settings' => '0', + 'main/prefs' => '0', 'sub/list' => 'N' ); @@ -84,7 +84,7 @@ class news_admin extends e_admin_dispatcher 'cat/list' => array('caption'=> LAN_CATEGORIES, 'icon'=> 'folder'), // Create Category. 'cat/create' => array('caption'=> LAN_NEWS_63, 'icon'=> 'fas-folder-plus'), // Category List 'other2' => array('divider'=> true), - 'main/settings' => array('caption'=> LAN_PREFS, 'icon'=>'fa-cog'), // Preferences + 'main/prefs' => array('caption'=> LAN_PREFS, 'icon'=>'fa-cog'), // Preferences // 'main/submitted' => array('caption'=> LAN_NEWS_64, 'perm' => 'N'), // Submitted News 'sub/list' => array('caption'=> NWSLAN_47, 'icon'=>'fa-user-edit'), // Submitted News // 'main/maint' => array('caption'=> LAN_NEWS_55, 'perm' => '0') // Maintenance @@ -484,15 +484,31 @@ class news_admin_ui extends e_admin_ui protected $fieldpref = array('checkboxes','news_id', 'news_thumbnail', 'news_title', 'news_datestamp', 'news_category', 'news_class', 'options'); - /* //TODO - protected $prefs = array( + protected $preftabs = ['general'=>LAN_GENERAL,'subnews'=>LAN_NEWS_101]; + + protected $prefs = [ + 'news_default_template' => ['title' => NWSLAN_127, 'type' => 'dropdown', 'data'=>'safestr', 'help' => LAN_NEWS_88, 'tab' => 'general'], + 'newsposts' => ['title' => NWSLAN_88, 'type' => 'dropdown', 'data'=>'int', 'tab' => 'general'], + 'news_list_limit' => ['title' => LAN_NEWS_91, 'type' => 'dropdown', 'data'=>'int', 'help' => LAN_NEWS_92, 'tab' => 'general'], + 'news_list_templates' => ['title' => LAN_NEWS_93, 'type' => 'checkboxes', 'help' => LAN_NEWS_94, 'tab' => 'general'], + 'news_pagination' => ['title' => LAN_PAGINATION, 'type' => 'dropdown', 'data'=>'safestr', 'help' => LAN_NEWS_112, 'tab' => 'general'], + 'news_cache_timeout' => ['title' => LAN_NEWS_110, 'type' => 'number', 'data'=>'int', 'help' => LAN_NEWS_111, 'tab' => 'general'], + 'news_cats' => ['title' => NWSLAN_86, 'type' => 'boolean', 'data'=>'int', 'tab' => 'general'], + 'nbr_cols' => ['title' => NWSLAN_87, 'type' => 'dropdown', 'data'=>'int', 'tab' => 'general'], + 'newsposts_archive' => ['title' => NWSLAN_115, 'type' => 'dropdown', 'data'=>'int', 'help' => NWSLAN_116, 'tab' => 'general'], + 'newsposts_archive_title' => ['title' => NWSLAN_117, 'type' => 'text', 'data'=>'safestr', 'tab' => 'general'], + 'news_editauthor' => ['title' => LAN_NEWS_51, 'type' => 'userclass', 'data'=>'int', 'tab' => 'general', 'writeParms'=>['classlist'=>'nobody,main,admin,classes']], + 'news_newdateheader' => ['title' => NWSLAN_111, 'type' => 'boolean', 'data'=>'int', 'help' => NWSLAN_112, 'tab' => 'general'], + 'news_unstemplate' => ['title' => NWSLAN_113, 'type' => 'boolean', 'data'=>'int', 'help' => NWSLAN_114, 'tab' =>'general'], + 'subnews_class' => ['title' => NWSLAN_106, 'type' => 'userclass','data'=>'int', 'tab' => 'subnews', 'writeParms'=>['classlist'=>'nobody,public,guest,member,admin,classes'] ], + 'subnews_htmlarea' => ['title' => NWSLAN_107, 'type' => 'boolean', 'data'=>'int', 'tab' => 'subnews'], + 'subnews_attach' => ['title' => NWSLAN_100, 'type' => 'boolean', 'data'=>'int', 'tab' => 'subnews'], + 'subnews_attach_minsize' => ['title' => LAN_NEWS_99, 'type' => 'dropdown', 'tab' => 'subnews'], + 'subnews_resize' => ['title' => NWSLAN_101, 'type' => 'number', 'data'=>'int', 'tab' => 'subnews', 'writeParms' => ['maxlength'=>5] ], + 'news_subheader' => ['title' => NWSLAN_120, 'type' => 'bbarea', 'tab' => 'subnews'] + + ]; - 'news_category' => array('title' => NWSLAN_127, 'type' => 'dropdown', 'help'=> "Determines how the default news page should appear."), - - - ); - */ - protected $cats = array(); protected $newspost; protected $addons = array(); @@ -862,13 +878,13 @@ function init() { $this->addons = e107::getAddonConfig('e_admin',null, 'config', $this); - +/* if(!empty($_POST['save_prefs'])) { $this->saveSettings(); - } + }*/ - if(e_DEBUG == true) // allowing manual fixing of comment total in DEBUG mode. + if(deftrue('e_DEBUG')) // allowing manual fixing of comment total in DEBUG mode. { $this->fields['news_comment_total']['noedit'] = false; $this->fields['news_comment_total']['inline'] = true; @@ -964,8 +980,67 @@ function CreateObserver() $this->initSEOFields(); } + function beforePrefsSave($new_data, $old_data) + { + + $new_data['news_default_template'] = preg_replace('#[^\w\pL\-]#u', '', $new_data['news_default_template']); - function saveSettings() + return $new_data; + } + + function afterPrefsSave() + { + $this->clearCache(); + } + function PrefsObserver() + { + parent::PrefsObserver(); + + $newsTemplates = array(); + $pref = e107::getPref(); + + if($newInfo = e107::getTemplateInfo('news', 'news', null, 'front', true)) //TODO 'category'=>'Categories'? research 'Use non-standard template for news layout' and integrate here. + { + foreach($newInfo as $k=>$val) + { + $newsTemplates[$k] = $val['title']; + } + + } + else + { + $newsTemplates = array('default'=>LAN_DEFAULT, 'list'=>LAN_LIST); + } + + $imageSizes = array( + + '400×300' => '400x300', + '640×480' => '640x480', + '800×600' => '800x600', + '1024×768' => '1024x768', + '1600×1200' => '2 MP (1600×1200)', + '2272×1704' => '4 MP (2272×1704)', + '2816×2112' => '6 MP (2816×2112)', + '3264×2448' => '8 MP (3264×2448)', + // 10 MP (3648×2736) + // 12 MP (4096×3072) + + ); + + $this->prefs['news_default_template']['writeParms']['optArray'] = $newsTemplates; + $this->prefs['newsposts']['writeParms']['optArray'] = $this->_optrange(50, false); + $this->prefs['news_list_limit']['writeParms']['optArray'] = $this->_optrange(50, false); + $this->prefs['news_list_templates']['writeParms'] = ['optArray' => $this->news_renderTypes, 'useKeyValues' => 1]; + $this->prefs['news_pagination']['writeParms'] = ['optArray' => ['record'=> "Record", 'page'=>'Page'], 'value'=>varset($pref['news_pagination'],'record')]; + $this->prefs['nbr_cols']['writeParms']['optArray'] = $this->_optrange(6, false); + $this->prefs['newsposts_archive']['writeParms']['optArray'] = $this->_optrange(intval($pref['newsposts']) - 1); + + $this->prefs['subnews_attach_minsize']['writeParms']['optArray'] = $imageSizes; + + + } + + /*function saveSettings() { if(!getperms('0')) { @@ -1002,7 +1077,7 @@ function saveSettings() e107::getLog()->logArrayDiffs($temp, e107::getPref(), 'NEWS_06'); $this->clearCache(); } - } + }*/ @@ -1023,7 +1098,7 @@ private function _optrange($num, $zero = true) return $tmp; } - function settingsPage() +/* function settingsPage() { // return $this->newspost->show_news_prefs(); @@ -1251,7 +1326,7 @@ function settingsPage() return e107::getMessage()->render().$text; // e107::getRender()->tablerender(NWSLAN_90, e107::getMessage()->render().$text); - } + }*/ function noPermissions($qry = '') From 1298c48e0a04d5458e5a07af239bb66345b1e48e Mon Sep 17 00:00:00 2001 From: camer0n Date: Fri, 26 Jul 2024 12:44:47 -0700 Subject: [PATCH 4/5] Closes #5304 Added option to restrict viewing/editing news posts to self-authored posts only. --- e107_admin/newspost.php | 90 ++++++++++++------- e107_languages/English/admin/lan_newspost.php | 5 ++ 2 files changed, 64 insertions(+), 31 deletions(-) diff --git a/e107_admin/newspost.php b/e107_admin/newspost.php index 44f498b715..77b1d3b371 100644 --- a/e107_admin/newspost.php +++ b/e107_admin/newspost.php @@ -181,7 +181,7 @@ public function beforeCreate($new_data, $old_data) $sef = e107::getParser()->toDB($new_data['category_sef']); - if(e107::getDb()->count('news_category', '(*)', "category_sef='{$sef}'")) + if(e107::getDb()->count('news_category', '(*)', "category_sef='$sef'")) { e107::getMessage()->addError(LAN_NEWS_65); return false; @@ -210,7 +210,7 @@ public function beforeUpdate($new_data, $old_data, $id) $message .= print_r($new_data,true); file_put_contents(e_LOG.'uiAjaxResponseInline.log', $message."\n\n", FILE_APPEND);*/ - if(e107::getDb()->count('news_category', '(*)', "category_sef='{$sef}' AND category_id !=".intval($id))) + if(e107::getDb()->count('news_category', '(*)', "category_sef='$sef' AND category_id !=".intval($id))) { e107::getMessage()->addError(LAN_NEWS_65); return false; @@ -398,7 +398,7 @@ function options($parms, $value, $id, $attributes) if($approved == 0) { //$text = $this->submit_image('submitnews['.$id.']', 1, 'execute', NWSLAN_58); - $text .= "".defset('ADMIN_EXECUTE_ICON').""; + $text .= "".defset('ADMIN_EXECUTE_ICON').""; // NWSLAN_103; } @@ -484,7 +484,7 @@ class news_admin_ui extends e_admin_ui protected $fieldpref = array('checkboxes','news_id', 'news_thumbnail', 'news_title', 'news_datestamp', 'news_category', 'news_class', 'options'); - protected $preftabs = ['general'=>LAN_GENERAL,'subnews'=>LAN_NEWS_101]; + protected $preftabs = ['general'=>LAN_GENERAL,'admin'=>LAN_HEADER_04, 'subnews'=>LAN_NEWS_101]; protected $prefs = [ 'news_default_template' => ['title' => NWSLAN_127, 'type' => 'dropdown', 'data'=>'safestr', 'help' => LAN_NEWS_88, 'tab' => 'general'], @@ -497,9 +497,12 @@ class news_admin_ui extends e_admin_ui 'nbr_cols' => ['title' => NWSLAN_87, 'type' => 'dropdown', 'data'=>'int', 'tab' => 'general'], 'newsposts_archive' => ['title' => NWSLAN_115, 'type' => 'dropdown', 'data'=>'int', 'help' => NWSLAN_116, 'tab' => 'general'], 'newsposts_archive_title' => ['title' => NWSLAN_117, 'type' => 'text', 'data'=>'safestr', 'tab' => 'general'], - 'news_editauthor' => ['title' => LAN_NEWS_51, 'type' => 'userclass', 'data'=>'int', 'tab' => 'general', 'writeParms'=>['classlist'=>'nobody,main,admin,classes']], 'news_newdateheader' => ['title' => NWSLAN_111, 'type' => 'boolean', 'data'=>'int', 'help' => NWSLAN_112, 'tab' => 'general'], 'news_unstemplate' => ['title' => NWSLAN_113, 'type' => 'boolean', 'data'=>'int', 'help' => NWSLAN_114, 'tab' =>'general'], + + 'news_editauthor' => ['title' => LAN_NEWS_51, 'type' => 'userclass', 'data'=>'int', 'tab' => 'admin', 'writeParms'=>['classlist'=>'nobody,main,admin,classes']], + 'news_limit_to_self' => ['title' => LAN_NEWS_113, 'type' => 'userclass', 'data'=>'int', 'help'=>LAN_NEWS_114, 'tab' => 'admin', 'writeParms'=>['classlist'=>'nobody,classes,no-excludes']], + 'subnews_class' => ['title' => NWSLAN_106, 'type' => 'userclass','data'=>'int', 'tab' => 'subnews', 'writeParms'=>['classlist'=>'nobody,public,guest,member,admin,classes'] ], 'subnews_htmlarea' => ['title' => NWSLAN_107, 'type' => 'boolean', 'data'=>'int', 'tab' => 'subnews'], 'subnews_attach' => ['title' => NWSLAN_100, 'type' => 'boolean', 'data'=>'int', 'tab' => 'subnews'], @@ -632,7 +635,7 @@ private function checkSEFSimilarity($new_data) { if(e_LANGUAGE === "Japanese" || e_LANGUAGE === "Korean") { - return null; + return; } @@ -871,12 +874,23 @@ function handleListImageBbcodeBatch($selected, $field, $value) } + /** + * Returns true when limit news post view/edit to self-authored content is active for the currently logged in administrator. + * @return bool + */ + private function limitToSelfEnabled() + { + if((int) $limit = e107::getPref('news_limit_to_self', false)) + { + return (check_class($limit) && !getperms('0')); + } + return false; + } function init() { - $this->addons = e107::getAddonConfig('e_admin',null, 'config', $this); /* if(!empty($_POST['save_prefs'])) @@ -969,11 +983,42 @@ private function initSEOFields() function EditObserver() { + parent::EditObserver(); + + $author = (int) $this->getModel()->get('news_author'); + + if($this->limitToSelfEnabled() && $author !== USERID) + { + $this->getRequest()->setAction('e403'); + return false; + } + $this->initSEOFields(); } + function ListObserver() + { + if($this->limitToSelfEnabled()) + { + $this->listQry .= " WHERE n.news_author = ".USERID; + } + + parent::ListObserver(); + } + + function ListAjaxObserver() + { + if($this->limitToSelfEnabled()) + { + $this->listQry .= " WHERE n.news_author = ".USERID; + } + + parent::ListAjaxObserver(); + } + + function CreateObserver() { parent::CreateObserver(); @@ -1086,10 +1131,6 @@ function submittedPage() $this->newspost->show_submitted_news(); } - function maintPage() - { - - } private function _optrange($num, $zero = true) { @@ -1329,19 +1370,6 @@ private function _optrange($num, $zero = true) }*/ - function noPermissions($qry = '') - { - $url = e_SELF.($qry ? '?'.$qry : ''); - if($qry !== e_QUERY) - { - $mes = e107::getMessage(); - $mes->add('Insufficient permissions!', E_MESSAGE_ERROR, true); - session_write_close(); - header('Location: '.$url); - } - exit; - } - private function processSubmittedMedia($data) { @@ -1501,7 +1529,7 @@ function news_author($curVal, $mode) - $pref = e107::pref('core'); + $pref = e107::pref(); $sql = e107::getDb(); @@ -1521,7 +1549,7 @@ function news_author($curVal, $mode) { $auth = ($curVal) ? intval($curVal) : USERID; - $sql->select("user", "user_name", "user_id={$auth} LIMIT 1"); + $sql->select("user", "user_name", "user_id=$auth LIMIT 1"); $row = $sql->fetch(); $text .= ""; $text .= "".$row['user_name'].""; @@ -1617,12 +1645,12 @@ function news_body($curVal,$mode) $val = strpos($curVal, "[img]http") !== false ? $curVal : str_replace("[img]../", "[img]", $curVal); $text .= "
"; - $text .= $frm->bbarea('news_body', $val, 'news', 'news', 'large'); + $text .= $frm->bbarea('news_body', $val, 'news', 'news'); $text .= "
"; $text .= "
"; $val = (strpos($curValExt, "[img]http") !== false ? $curValExt : str_replace("[img]../", "[img]",$curValExt)); - $text .= $frm->bbarea('news_extended', $val, 'extended', 'news','large'); + $text .= $frm->bbarea('news_extended', $val, 'extended', 'news'); $text .= "
"; @@ -1666,7 +1694,7 @@ function news_thumbnail($curval,$mode) $url = e107::getParser()->thumbUrl($curval,'aw=80'); $link = e107::getParser()->replaceConstants($curval); - return "".basename($curval).""; + return "".basename($curval).""; } @@ -1680,7 +1708,7 @@ function news_thumbnail($curval,$mode) foreach($thumbTmp as $key=>$path) { $url = ($path[0] == '{') ? $path : e_TEMP.$path; - $paths[] = e107::getParser()->thumbUrl($url,'aw=800'); ; + $paths[] = e107::getParser()->thumbUrl($url,'aw=800'); } } @@ -1717,7 +1745,7 @@ function news_title($value, $mode) { $news_item = $this->getController()->getListModel()->toArray(); $url = e107::getUrl()->create('news/view/item', $news_item); - return "".$value.""; + return "".$value.""; } return $value; } diff --git a/e107_languages/English/admin/lan_newspost.php b/e107_languages/English/admin/lan_newspost.php index 60fa2aed61..5b405f24b8 100644 --- a/e107_languages/English/admin/lan_newspost.php +++ b/e107_languages/English/admin/lan_newspost.php @@ -238,3 +238,8 @@ define("LAN_NEWS_110", "News Cache Timeout"); define("LAN_NEWS_111", "Time in minutes. Applies only when system cache is enabled."); define("LAN_NEWS_112", "Select the URL format. Either record count (eg. page=20, page=40, page=60 etc.) or page number (eg. page=1, page=2, page=3 etc.). Warning: If modified some news URLs will need to be re-indexed by search engines."); + + // v2.4 + +define("LAN_NEWS_113", "Limt to self-authored news posts only"); +define("LAN_NEWS_114", "Enable this preference to restrict group members from viewing and editing news posts authored by other administrators."); \ No newline at end of file From c4f2abb85c921b1d9f8cf7cacc28d7169b9ef05b Mon Sep 17 00:00:00 2001 From: camer0n Date: Fri, 26 Jul 2024 13:08:01 -0700 Subject: [PATCH 5/5] Fixes #5271 Poll fatal error. --- e107_handlers/form_handler.php | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/e107_handlers/form_handler.php b/e107_handlers/form_handler.php index 0b46520fc6..d627109719 100644 --- a/e107_handlers/form_handler.php +++ b/e107_handlers/form_handler.php @@ -4550,17 +4550,20 @@ protected function _default_options($type) public function columnSelector($columnsArray, $columnsDefault = array(), $id = 'column_options') { $columnsArray = array_filter($columnsArray); + $tabs = []; - try + if($adminUI = e107::getAdminUI()) { - $tabs = e107::getAdminUI()->getController()->getTabs(); - } - catch (Exception $e) - { - // do something + try + { + $tabs = $adminUI->getController()->getTabs(); + } + catch (Exception $e) + { + // do something + } } - // navbar-header nav-header // navbar-header nav-header