• Main Page
  • Related Pages
  • Modules
  • Namespaces
  • Data Structures
  • Files
  • File List
  • Globals

Services/News/classes/class.ilObjNewsSettingsGUI.php

Go to the documentation of this file.
00001 <?php
00002 /*
00003         +-----------------------------------------------------------------------------+
00004         | ILIAS open source                                                           |
00005         +-----------------------------------------------------------------------------+
00006         | Copyright (c) 1998-2006 ILIAS open source, University of Cologne            |
00007         |                                                                             |
00008         | This program is free software; you can redistribute it and/or               |
00009         | modify it under the terms of the GNU General Public License                 |
00010         | as published by the Free Software Foundation; either version 2              |
00011         | of the License, or (at your option) any later version.                      |
00012         |                                                                             |
00013         | This program is distributed in the hope that it will be useful,             |
00014         | but WITHOUT ANY WARRANTY; without even the implied warranty of              |
00015         | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the               |
00016         | GNU General Public License for more details.                                |
00017         |                                                                             |
00018         | You should have received a copy of the GNU General Public License           |
00019         | along with this program; if not, write to the Free Software                 |
00020         | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA. |
00021         +-----------------------------------------------------------------------------+
00022 */
00023 include_once("./classes/class.ilObjectGUI.php");
00024 
00025 
00036 class ilObjNewsSettingsGUI extends ilObjectGUI
00037 {
00038     private static $ERROR_MESSAGE;
00044         public function __construct($a_data, $a_id, $a_call_by_reference = true, $a_prepare_output = true)
00045         {
00046                 $this->type = 'nwss';
00047                 parent::ilObjectGUI($a_data, $a_id, $a_call_by_reference, $a_prepare_output);
00048 
00049                 $this->lng->loadLanguageModule('news');
00050                 $this->lng->loadLanguageModule('feed');
00051 
00052         }
00053 
00060         public function executeCommand()
00061         {
00062                 global $rbacsystem,$ilErr,$ilAccess;
00063 
00064                 $next_class = $this->ctrl->getNextClass($this);
00065                 $cmd = $this->ctrl->getCmd();
00066 
00067                 $this->prepareOutput();
00068 
00069                 if(!$ilAccess->checkAccess('read','',$this->object->getRefId()))
00070                 {
00071                         $ilErr->raiseError($this->lng->txt('no_permission'),$ilErr->WARNING);
00072                 }
00073 
00074                 switch($next_class)
00075                 {
00076                         case 'ilpermissiongui':
00077                                 $this->tabs_gui->setTabActive('perm_settings');
00078                                 include_once("./classes/class.ilPermissionGUI.php");
00079                                 $perm_gui =& new ilPermissionGUI($this);
00080                                 $ret =& $this->ctrl->forwardCommand($perm_gui);
00081                                 break;
00082 
00083                         default:
00084                                 if(!$cmd || $cmd == 'view')
00085                                 {
00086                                         $cmd = "editSettings";
00087                                 }
00088 
00089                                 $this->$cmd();
00090                                 break;
00091                 }
00092                 return true;
00093         }
00094 
00101         public function getAdminTabs()
00102         {
00103                 global $rbacsystem, $ilAccess;
00104 
00105                 if ($rbacsystem->checkAccess("visible,read",$this->object->getRefId()))
00106                 {
00107                         $this->tabs_gui->addTarget("news_edit_news_settings",
00108                                 $this->ctrl->getLinkTarget($this, "editSettings"),
00109                                 array("editSettings", "view"));
00110                 }
00111 
00112                 if ($rbacsystem->checkAccess('edit_permission',$this->object->getRefId()))
00113                 {
00114                         $this->tabs_gui->addTarget("perm_settings",
00115                                 $this->ctrl->getLinkTargetByClass('ilpermissiongui',"perm"),
00116                                 array(),'ilpermissiongui');
00117                 }
00118         }
00119 
00123         public function editSettings()
00124         {
00125                 global $ilCtrl, $lng, $ilSetting;
00126                 
00127                 $news_set = new ilSetting("news");
00128                 $feed_set = new ilSetting("feed");
00129                 
00130                 $enable_internal_news = $ilSetting->get("block_activated_news");
00131                 $enable_internal_rss = $news_set->get("enable_rss_for_internal");
00132                 $news_default_visibility = ($news_set->get("default_visibility") != "")
00133                         ? $news_set->get("default_visibility")
00134                         : "users";
00135                 $disable_repository_feeds = $feed_set->get("disable_rep_feeds");
00136                 $nr_personal_desktop_feeds = $ilSetting->get("block_limit_pdfeed");
00137                 
00138                 $allow_shorter_periods = $news_set->get("allow_shorter_periods");
00139                 $allow_longer_periods = $news_set->get("allow_longer_periods");
00140         
00141                 include_once("./Services/News/classes/class.ilNewsItem.php");
00142                 $rss_period = ilNewsItem::_lookupRSSPeriod();
00143                 
00144                 include_once("./Services/Form/classes/class.ilPropertyFormGUI.php");
00145                 $form = new ilPropertyFormGUI();
00146                 $form->setFormAction($ilCtrl->getFormAction($this));
00147                 $form->setTitle($lng->txt("news_settings"));
00148                 
00149                 // Enable internal news
00150                 $cb_prop = new ilCheckboxInputGUI($lng->txt("news_enable_internal_news"),
00151                         "enable_internal_news");
00152                 $cb_prop->setValue("1");
00153                 $cb_prop->setInfo($lng->txt("news_enable_internal_news_info"));
00154                 $cb_prop->setChecked($enable_internal_news);
00155                 $form->addItem($cb_prop);
00156                 
00157                 // Enable rss for internal news
00158                 $cb_prop = new ilCheckboxInputGUI($lng->txt("news_enable_internal_rss"),
00159                         "enable_internal_rss");
00160                 $cb_prop->setValue("1");
00161                 $cb_prop->setInfo($lng->txt("news_enable_internal_rss_info"));
00162                 $cb_prop->setChecked($enable_internal_rss);
00163 
00164                         // RSS News Period
00165                         $rssp_opts = array(
00166                                 2 => "2 ".$lng->txt("days"),
00167                                 3 => "3 ".$lng->txt("days"),
00168                                 5 => "5 ".$lng->txt("days"),
00169                                 7 => "1 ".$lng->txt("week"),
00170                                 14 => "2 ".$lng->txt("weeks"),
00171                                 30 => "1 ".$lng->txt("month"),
00172                                 60 => "2 ".$lng->txt("months"));
00173                         $rssp_sel = new ilSelectInputGUI($lng->txt("news_rss_period"),
00174                                 "news_rss_period");
00175                         $rssp_sel->setOptions($rssp_opts);
00176                         $rssp_sel->setValue((int) $rss_period);
00177                         $cb_prop->addSubItem($rssp_sel);
00178 
00179                 $form->addItem($cb_prop);
00180                 
00181                 // Default Visibility
00182                 $radio_group = new ilRadioGroupInputGUI($lng->txt("news_default_visibility"), "news_default_visibility");
00183                 $radio_option = new ilRadioOption($lng->txt("news_visibility_users"), "users");
00184                 $radio_group->addOption($radio_option);
00185                 $radio_option = new ilRadioOption($lng->txt("news_visibility_public"), "public");
00186                 $radio_group->addOption($radio_option);
00187                 $radio_group->setInfo($lng->txt("news_news_item_visibility_info"));
00188                 $radio_group->setRequired(false);
00189                 $radio_group->setValue($news_default_visibility);
00190                 $form->addItem($radio_group);
00191 
00192                 // Number of news items per object
00193                 $nr_opts = array(50 => 50, 100 => 100, 200 => 200);
00194                 $nr_sel = new ilSelectInputGUI($lng->txt("news_nr_of_items"),
00195                         "news_max_items");
00196                 $nr_sel->setInfo($lng->txt("news_nr_of_items_info"));
00197                 $nr_sel->setOptions($nr_opts);
00198                 $nr_sel->setValue($news_set->get("max_items"));
00199                 $form->addItem($nr_sel);
00200 
00201                 // Access Cache
00202                 $min_opts = array(0 => 0, 1 => 1, 2 => 2, 5 => 5, 10 => 10, 20 => 20, 30 => 30, 60 => 60);
00203                 $min_sel = new ilSelectInputGUI($lng->txt("news_acc_cache"),
00204                         "news_acc_cache_mins");
00205                 $min_sel->setInfo($lng->txt("news_acc_cache_info"));
00206                 $min_sel->setOptions($min_opts);
00207                 $min_sel->setValue($news_set->get("acc_cache_mins"));
00208                 $form->addItem($min_sel);
00209                 
00210                 // PD News Period
00211                 $per_opts = array(
00212                         2 => "2 ".$lng->txt("days"),
00213                         3 => "3 ".$lng->txt("days"),
00214                         5 => "5 ".$lng->txt("days"),
00215                         7 => "1 ".$lng->txt("week"),
00216                         14 => "2 ".$lng->txt("weeks"),
00217                         30 => "1 ".$lng->txt("month"),
00218                         60 => "2 ".$lng->txt("months"),
00219                         120 => "4 ".$lng->txt("months"),
00220                         180 => "6 ".$lng->txt("months"),
00221                         366 =>  "1 ".$lng->txt("year"));
00222                 $per_sel = new ilSelectInputGUI($lng->txt("news_pd_period"),
00223                         "news_pd_period");
00224                 $per_sel->setInfo($lng->txt("news_pd_period_info"));
00225                 $per_sel->setOptions($per_opts);
00226                 $per_sel->setValue((int) ilNewsItem::_lookupDefaultPDPeriod());
00227                 $form->addItem($per_sel);
00228 
00229                 // Allow user to choose lower values
00230                 $sp_prop = new ilCheckboxInputGUI($lng->txt("news_allow_shorter_periods"),
00231                         "allow_shorter_periods");
00232                 $sp_prop->setValue("1");
00233                 $sp_prop->setInfo($lng->txt("news_allow_shorter_periods_info"));
00234                 $sp_prop->setChecked($allow_shorter_periods);
00235                 $form->addItem($sp_prop);
00236 
00237                 // Allow user to choose higher values
00238                 $lp_prop = new ilCheckboxInputGUI($lng->txt("news_allow_longer_periods"),
00239                         "allow_longer_periods");
00240                 $lp_prop->setValue("1");
00241                 $lp_prop->setInfo($lng->txt("news_allow_longer_periods_info"));
00242                 $lp_prop->setChecked($allow_longer_periods);
00243                 $form->addItem($lp_prop);
00244 
00245                 // Section Header: External Web Feeds Settings
00246                 $sh = new ilFormSectionHeaderGUI();
00247                 $sh->setTitle($lng->txt("feed_settings"));
00248                 $form->addItem($sh);
00249                 
00250                 // Disable External Web Feeds in catetegories
00251                 $cb_prop = new ilCheckboxInputGUI($lng->txt("feed_disable_rep_feeds"),
00252                         "disable_repository_feeds");
00253                 $cb_prop->setValue("1");
00254                 $cb_prop->setInfo($lng->txt("feed_disable_rep_feeds_info"));
00255                 $cb_prop->setChecked($disable_repository_feeds);
00256                 $form->addItem($cb_prop);
00257 
00258                 // Number of External Feeds on personal desktop
00259                 $sel = new ilSelectInputGUI($lng->txt("feed_nr_pd_feeds"), "nr_pd_feeds");
00260                 $sel->setInfo($lng->txt("feed_nr_pd_feeds_info"));
00261                 $sel->setOptions(array(0 => "0",
00262                         1 => "1",
00263                         2 => "2",
00264                         3 => "3",
00265                         4 => "4",
00266                         5 => "5"));
00267                 $sel->setValue($nr_personal_desktop_feeds);
00268                 $form->addItem($sel);
00269 
00270                 // Proxy
00271                 $prox = new ilTextInputGUI($lng->txt("feed_proxy"), "proxy");
00272                 $prox->setInfo($lng->txt("feed_proxy_info"));
00273                 $prox->setValue($feed_set->get("proxy"));
00274                 $form->addItem($prox);
00275 
00276                 // Proxy Port
00277                 $proxp = new ilTextInputGUI($lng->txt("feed_proxy_port"), "proxy_port");
00278                 $proxp->setInfo($lng->txt("feed_proxy_port_info"));
00279                 $proxp->setSize(10);
00280                 $proxp->setMaxLength(10);
00281                 $proxp->setValue($feed_set->get("proxy_port"));
00282                 $form->addItem($proxp);
00283                 
00284                 // command buttons
00285                 $form->addCommandButton("saveSettings", $lng->txt("save"));
00286                 $form->addCommandButton("view", $lng->txt("cancel"));
00287 
00288                 $this->tpl->setContent($form->getHTML());
00289         }
00290 
00294         public function saveSettings()
00295         {
00296                 global $ilCtrl, $ilSetting;
00297                 
00298                 $news_set = new ilSetting("news");
00299                 $feed_set = new ilSetting("feed");
00300                 $ilSetting->set("block_activated_news", $_POST["enable_internal_news"]);
00301                 $ilSetting->set("block_activated_pdnews", $_POST["enable_internal_news"]);
00302                 $news_set->set("enable_rss_for_internal", $_POST["enable_internal_rss"]);
00303                 $news_set->set("max_items", $_POST["news_max_items"]);
00304                 $news_set->set("acc_cache_mins", $_POST["news_acc_cache_mins"]);
00305                 $news_set->set("pd_period", $_POST["news_pd_period"]);
00306                 $news_set->set("default_visibility", $_POST["news_default_visibility"]);
00307                 $news_set->set("allow_shorter_periods", $_POST["allow_shorter_periods"]);
00308                 $news_set->set("allow_longer_periods", $_POST["allow_longer_periods"]);
00309                 $news_set->set("rss_period", $_POST["news_rss_period"]);
00310                 
00311                 $feed_set->set("disable_rep_feeds", $_POST["disable_repository_feeds"]);
00312                 $ilSetting->set("block_limit_pdfeed", $_POST["nr_pd_feeds"]);
00313                 if ($_POST["nr_pd_feeds"] > 0)
00314                 {
00315                         $ilSetting->set("block_activated_pdfeed", 1);
00316                 }
00317                 else
00318                 {
00319                         $ilSetting->set("block_activated_pdfeed", 0);
00320                 }
00321                 $feed_set->set("proxy", trim($_POST["proxy"]));
00322                 $feed_set->set("proxy_port", trim($_POST["proxy_port"]));
00323                 
00324                 ilUtil::sendInfo($this->lng->txt("settings_saved"),true);
00325                 
00326                 $ilCtrl->redirect($this, "view");
00327         }
00328 }
00329 ?>

Generated on Fri Dec 13 2013 17:57:00 for ILIAS Release_3_9_x_branch .rev 46835 by  doxygen 1.7.1