Dotclear

Changeset 1969:d2ef655d3195


Ignore:
Timestamp:
09/20/13 18:10:13 (11 years ago)
Author:
Denis Jean-Chirstian <contact@…>
Branch:
default
Message:

Revamp plugin maintenance, step 4, add user prefs (without translation), wait for boss, addresses #999

Location:
plugins/maintenance
Files:
1 added
4 edited

Legend:

Unmodified
Added
Removed
  • plugins/maintenance/_admin.php

    r1955 r1969  
    2222 
    2323// Admin behaviors 
    24 $core->addBehavior('dcMaintenanceRegister', array('dcMaintenanceAdmin', 'register')); 
    25 $core->addBehavior('adminDashboardFavs', array('dcMaintenanceAdmin', 'favs')); 
    26 $core->addBehavior('adminDashboardFavsIcon', array('dcMaintenanceAdmin', 'favsicon')); 
    27 $core->addBehavior('adminPreferencesForm',   array('dcMaintenanceAdmin',   'prefform')); 
    28 $core->addBehavior('adminBeforeUserOptionsUpdate',     array('dcMaintenanceAdmin',   'userupd')); 
     24$core->addBehavior('dcMaintenanceRegister', array('dcMaintenanceAdmin', 'dcMaintenanceRegister')); 
     25$core->addBehavior('adminPreferencesHeaders', array('dcMaintenanceAdmin', 'adminPreferencesHeaders')); 
     26$core->addBehavior('adminDashboardFavs', array('dcMaintenanceAdmin', 'adminDashboardFavs')); 
     27$core->addBehavior('adminDashboardFavsIcon', array('dcMaintenanceAdmin', 'adminDashboardFavsIcon')); 
     28$core->addBehavior('adminDashboardItems', array('dcMaintenanceAdmin', 'adminDashboardItems')); 
     29$core->addBehavior('adminPreferencesForm',   array('dcMaintenanceAdmin',   'adminPreferencesForm')); 
     30$core->addBehavior('adminBeforeUserOptionsUpdate',     array('dcMaintenanceAdmin',   'adminBeforeUserOptionsUpdate')); 
    2931 
    3032/** 
     
    4547      * @param $tabs     <b>arrayObject</b>  Array of tabs to register 
    4648      */ 
    47       public static function register($core, $tasks, $groups, $tabs) 
     49      public static function dcMaintenanceRegister($core, $tasks, $groups, $tabs) 
    4850     { 
    4951          $tabs['maintenance'] = __('Servicing'); 
     
    6870 
    6971     /** 
     72      * Dashboard headers. 
     73      * 
     74      * Add ajavascript to toggle tasks list. 
     75      */ 
     76     public static function adminPreferencesHeaders() 
     77     { 
     78          return dcPage::jsLoad('index.php?pf=maintenance/js/preferences.js'); 
     79     } 
     80 
     81     /** 
    7082      * Dashboard favs. 
    7183      * 
     
    7385      * @param $favs     <b>arrayObject</b>  Array of favs 
    7486      */ 
    75      public static function favs($core, $favs) 
     87     public static function adminDashboardFavs($core, $favs) 
    7688     { 
    7789          $favs['maintenance'] = new ArrayObject(array( 
     
    95107      * @param $icon     <b>arrayObject</b>  Current fav attributes 
    96108      */ 
    97      public static function favsicon($core, $name, $icon) 
     109     public static function adminDashboardFavsIcon($core, $name, $icon) 
    98110     { 
    99111          // Check icon 
     
    103115 
    104116          // Check user option 
    105           $user_options = $core->auth->getOptions(); 
    106           if (empty($user_options['user_maintenance_expired'])) { 
     117          $core->auth->user_prefs->addWorkspace('maintenance'); 
     118          if (!$core->auth->user_prefs->maintenance->dashboard_icon) { 
    107119               return null; 
    108120          } 
     
    120132 
    121133     /** 
     134      * Dashboard items stack. 
     135      * 
     136      * @param $core     <b>dcCore</b>  dcCore instance 
     137      * @param $items    <b>arrayObject</b>  Dashboard items 
     138      */ 
     139     public static function adminDashboardItems($core, $items) 
     140     { 
     141          $core->auth->user_prefs->addWorkspace('maintenance'); 
     142          if (!$core->auth->user_prefs->maintenance->dashboard_item) { 
     143               return null; 
     144          } 
     145 
     146          $maintenance = new dcMaintenance($core); 
     147          $tasks = $maintenance->getExpired(); 
     148          if (empty($tasks)) { 
     149               return null; 
     150          } 
     151 
     152          $lines = array(); 
     153          foreach($tasks as $id => $ts) { 
     154               $lines[$ts] =  
     155               '<li title="'.sprintf(__('Last updated on %s'), 
     156                    dt::dt2str($core->blog->settings->system->date_format, $ts).' '. 
     157                    dt::dt2str($core->blog->settings->system->time_format, $ts) 
     158               ).'">'.$maintenance->getTask($id)->task().'</li>'; 
     159          } 
     160          ksort($lines); 
     161 
     162          $items[] = new ArrayObject(array( 
     163               '<div id="maintenance-expired">'. 
     164               '<h3><img src="index.php?pf=maintenance/icon.png" alt="" /> '.__('Maintenance').'</h3>'. 
     165               '<p>'.sprintf(__('There is a task to update.', 'There are %s tasks to update.', count($tasks)), count($tasks)).'</p>'. 
     166               '<ul>'.implode('',$lines).'</ul>'. 
     167               '<p><a href="plugin.php?p=maintenance">'.__('Manage task').'</a></p>'. 
     168               '</div>' 
     169               )); 
     170     } 
     171 
     172     /** 
    122173      * User preferences form. 
    123174      * 
     
    127178      * @param $args     <b>object</b>  dcCore instance or record 
    128179      */ 
    129      public static function prefform($args) 
    130      { 
    131           $opts = array(); 
    132           if ($args instanceof dcCore) { 
    133                $opts = $args->auth->getOptions(); 
    134                $core = $args; 
    135           } 
    136           elseif ($args instanceof record) { 
    137                $opts = $args->options(); 
    138                $core = $args->core; 
     180     public static function adminPreferencesForm($core) 
     181     { 
     182          $core->auth->user_prefs->addWorkspace('maintenance'); 
     183          $maintenance = new dcMaintenance($core); 
     184 
     185          $tasks = $maintenance->getTasks(); 
     186          if (empty($tasks)) { 
     187               return null; 
     188          } 
     189 
     190          $full_combo_ts = array_merge(array( 
     191               __('Use different periods for each task') => 'seperate'),  
     192               self::comboTs() 
     193          ); 
     194 
     195          $task_combo_ts = array_merge(array( 
     196               __('Never') => 0),  
     197               self::comboTs() 
     198          ); 
     199 
     200          echo 
     201          '<div class="fieldset">'. 
     202          '<h4>'.__('Maintenance').'</h4>'. 
     203 
     204          '<div class="two-boxes">'. 
     205 
     206          '<p><label for="maintenance_dashboard_icon" class="classic">'. 
     207          form::checkbox('maintenance_dashboard_icon', 1, $core->auth->user_prefs->maintenance->dashboard_icon). 
     208          __('Display count of expired tasks on maintenance dashboard icon').'</label></p>'. 
     209 
     210          '<p><label for="maintenance_dashboard_item" class="classic">'. 
     211          form::checkbox('maintenance_dashboard_item', 1, $core->auth->user_prefs->maintenance->dashboard_item). 
     212          __('Display list of expired tasks on dashboard contents').'</label></p>'. 
     213 
     214          '<p><label for="maintenance_plugin_message" class="classic">'. 
     215          form::checkbox('maintenance_plugin_message', 1, $core->auth->user_prefs->maintenance->plugin_message). 
     216          __('Display alert message of expired tasks on plugin page').'</label></p>'. 
     217 
     218          '</div>'. 
     219 
     220          '<div class="two-boxes">'. 
     221 
     222          '<p><label for="maintenance_recall_time">'.__('Recall time for all tasks').'</label>'. 
     223          form::combo('maintenance_recall_time', $full_combo_ts, 'seperate', 'recall-for-all'). 
     224          '</p>'. 
     225 
     226          '</div>'. 
     227 
     228          '<div id="maintenance-recall-time">'. 
     229          '<h5>'.__('Recall time per task').'</h5>'; 
     230 
     231          foreach($tasks as $task) { 
     232               echo 
     233               '<div class="two-boxes">'. 
     234 
     235               '<p><label for="maintenance_ts_'.$task->id().'">'.$task->task().'</label>'. 
     236               form::combo('maintenance_ts_'.$task->id(), $task_combo_ts, $task->ts(), 'recall-per-task'). 
     237               '</p>'. 
     238 
     239               '</div>'; 
    139240          } 
    140241 
    141242          echo  
    142           '<p><label for="user_maintenance_expired" class="classic">'. 
    143           form::checkbox('user_maintenance_expired', 1, !empty($opts['user_maintenance_expired'])).' '. 
    144           __('Show maintenance tasks to update.').'</label></p>'; 
     243          '</div>'. 
     244          '</div>'; 
    145245     } 
    146246 
     
    151251      * @param $user_id  <b>string</b>  User ID 
    152252      */ 
    153      public static function userupd($cur, $user_id=null) 
    154      { 
    155           if (!is_null($user_id)) { 
    156                $cur->user_options['user_maintenance_expired'] = !empty($_POST['user_maintenance_expired']); 
    157           } 
     253     public static function adminBeforeUserOptionsUpdate($cur, $user_id=null) 
     254     { 
     255          global $core; 
     256 
     257          if (is_null($user_id)) { 
     258               return null; 
     259          } 
     260 
     261          $maintenance = new dcMaintenance($core); 
     262          $tasks = $maintenance->getTasks(); 
     263          if (empty($tasks)) { 
     264               return null; 
     265          } 
     266 
     267          $core->auth->user_prefs->addWorkspace('maintenance'); 
     268          $core->auth->user_prefs->maintenance->put('dashboard_icon', !empty($_POST['maintenance_dashboard_icon']), 'boolean'); 
     269          $core->auth->user_prefs->maintenance->put('dashboard_item', !empty($_POST['maintenance_dashboard_item']), 'boolean'); 
     270          $core->auth->user_prefs->maintenance->put('plugin_message', !empty($_POST['maintenance_plugin_message']), 'boolean'); 
     271 
     272          foreach($tasks as $task) { 
     273               if ($_POST['maintenance_recall_time'] == 'seperate') { 
     274                    $ts = empty($_POST['maintenance_ts_'.$task->id()]) ? 0 : $_POST['maintenance_ts_'.$task->id()]; 
     275               } 
     276               else { 
     277                    $ts = $_POST['maintenance_recall_time']; 
     278               } 
     279               $core->auth->user_prefs->maintenance->put('ts_'.$task->id(), abs((integer) $ts), 'integer'); 
     280          } 
     281     } 
     282 
     283     /* @ignore */ 
     284     public static function comboTs() 
     285     { 
     286          return array( 
     287               __('Every week')         => 604800, 
     288               __('Every two weeks')    => 1209600, 
     289               __('Every month')        => 2592000, 
     290               __('Every two months')   => 5184000 
     291          ); 
    158292     } 
    159293} 
  • plugins/maintenance/inc/class.dc.maintenance.php

    r1955 r1969  
    230230 
    231231     /** 
    232       * Get expired task. 
     232      * Get expired tasks. 
    233233      * 
    234234      * @return     <b>array</b>   Array of expired Task ID / date 
     
    246246               // Check if task exists 
    247247               if (($task = $this->getTask($rs->log_msg)) !== null) { 
    248                     // Check if tasks expired 
    249                     if (strtotime($rs->log_dt) + $task->ts() < time()) { 
     248                    // Check if remider is used and tasks expired 
     249                    if ($task->ts() && strtotime($rs->log_dt) + $task->ts() < time()) { 
    250250                         $logs[$rs->log_msg] = $rs->log_dt; 
    251251                    } 
  • plugins/maintenance/inc/class.dc.maintenance.task.php

    r1959 r1969  
    6363               $this->success = __('Task successfully executed.'); 
    6464          } 
     65 
     66          $core->auth->user_prefs->addWorkspace('maintenance'); 
     67          $ts = $core->auth->user_prefs->maintenance->get('ts_'.$this->id); 
     68           
     69          $this->ts = abs((integer) $ts); 
    6570     } 
    6671 
     
    9398     public function ts() 
    9499     { 
    95           return abs((integer) $this->ts); 
     100          return $this->ts === false ? false : abs((integer) $this->ts); 
    96101     } 
    97102 
  • plugins/maintenance/index.php

    r1959 r1969  
    5959 
    6060// Get expired tasks 
    61 $user_options = $core->auth->getOptions(); 
    62 if (!empty($user_options['user_maintenance_expired'])) { 
     61$core->auth->user_prefs->addWorkspace('maintenance'); 
     62if ($core->auth->user_prefs->maintenance->plugin_message) { 
    6363     $expired = $maintenance->getExpired(); 
    6464} 
     
    158158                    if (array_key_exists($t->id(), $expired)) { 
    159159                         $res_task .=  
    160                          ' <span class="clear form-note warn">'.sprintf( 
    161                               __('Last execution of this task was on %s. You should execute it again.'), 
     160                         '<br /> <span class="warn">'.sprintf( 
     161                              __('Last execution of this task was on %s.'), 
    162162                              dt::dt2str(__('%Y-%m-%d %H:%M'), $expired[$t->id()]) 
    163                          ).'</span>'; 
     163                         ).' '. 
     164                         __('You should execute it now.').'</span>'; 
     165                    } 
     166                    elseif ($t->ts()) { 
     167                         $res_task .=  
     168                         '<br /> <span class="warn">'. 
     169                         __('This task has never been executed.').' '. 
     170                         __('You should execute it now.').'</span>'; 
    164171                    } 
    165172 
Note: See TracChangeset for help on using the changeset viewer.

Sites map