Dotclear

Changeset 1025


Ignore:
Timestamp:
04/14/09 21:37:55 (14 years ago)
Author:
JcDenis
Message:

eventdata 0.5.0 :

  • Minified .css and .js,
  • Fixed some bugs,
  • Add event edit fields and forms in plugin page
  • Add direct event add/delete/edit on post page. (closes #149)
Location:
plugins/eventdata
Files:
1 added
12 edited

Legend:

Unmodified
Added
Removed
  • plugins/eventdata/README.txt

    r1017 r1025  
    1 eventdata 0.4.1 (2009/04/13) plugin for Dotclear 2 
     1eventdata 0.5.0 (2009/04/14) plugin for Dotclear 2 
    22 
    33Préambule: 
     
    322322ainsi que de lieu d'événement sont ajoutés.  
    323323Il suffit d'entrer une date de début et de fin pour associer un événement à un billet. Le lieu est facultatif. 
    324 Une listes des évènemets dèjà liés à un billet peut être présente, il suffit de la selectionner pour l'effacer lors de l'enregistrement du billet. 
     324Une listes des évènemets dèjà liés à un billet peut être présente. 
     325Si le language javascript est actif, il est possible de supprimer ou d'ajouter des événements sans enregistrer le billet,  
     326sinon il faut enregistrer le billet pour que les changements sur les événements soit pris en compte. 
     327Un lien vers l'édition d'un événement et également présent pour chaque événement associé au billet. 
    325328 
    326329X.2 Billets (posts.php): 
     
    333336---------------------------------------------- 
    334337 
    335 Permet les actions par paquet. (Ajout d'événement sur plusieurs billets.) 
     338Permet les actions par paquet. (Ajout/suppression d'événement sur plusieurs billets.) 
    336339 
    337340X.4 Extension Evénements (plugin.php): 
  • plugins/eventdata/_admin.php

    r1017 r1025  
    4040$core->addBehavior('adminPostFormSidebar',array('eventdataAdminBehaviors','adminPostFormSidebar')); 
    4141$core->addBehavior('adminAfterPostUpdate',array('eventdataAdminBehaviors','adminAfterPostSave')); 
     42$core->addBehavior('adminAfterBeforeCreate',array('eventdataAdminBehaviors','adminAfterBeforeCreate')); 
     43$core->addBehavior('adminAfterPostCreate',array('eventdataAdminBehaviors','adminAfterPostCreate')); 
    4244$core->addBehavior('adminAfterPostCreate',array('eventdataAdminBehaviors','adminAfterPostSave')); 
    4345$core->addBehavior('adminBeforePostDelete',array('eventdataAdminBehaviors','adminBeforePostDelete')); 
     
    4749 
    4850# Rest functions 
    49 $core->rest->addFunction('getEventdata',array('eventdataRest','getEventdata')); 
    50 $core->rest->addFunction('delEventdata',array('eventdataRest','delEventdata')); 
    51 $core->rest->addFunction('setEventdata',array('eventdataRest','setEventdata')); 
     51$core->rest->addFunction('getEventdata',array('dcEventdataRest','getEventdata')); 
     52$core->rest->addFunction('delEventdata',array('dcEventdataRest','delEventdata')); 
     53$core->rest->addFunction('setEventdata',array('dcEventdataRest','setEventdata')); 
    5254 
    5355# Import/export 
     
    6466{ 
    6567     # JS for post.php (bad hack!) 
    66      public static function adminPostHeaders() 
    67      { 
    68           return  
    69           '<script type="text/javascript" src="'.DC_ADMIN_URL.'?pf=eventdata/js/post.js"></script>'. 
    70           '<script type="text/javascript" src="'.DC_ADMIN_URL.'?pf=eventdata/js/datepickerBC.js"></script>'. 
     68     public static function adminPostHeaders($post_page=true) 
     69     { 
     70          return 
     71          ($post_page ?  
     72               dcPage::jsLoad(DC_ADMIN_URL.'?pf=eventdata/js/post.js'). 
     73               '<script type="text/javascript">'."\n". 
     74               "//<![CDATA[\n". 
     75               dcPage::jsVar('eventdataEditor.prototype.url_edit','plugin.php?p=eventdata&eventdata='). 
     76               dcPage::jsVar('eventdataEditor.prototype.text_confirm_remove',__('Are you sure you want to remove this event?')). 
     77               dcPage::jsVar('eventdataEditor.prototype.text_action_edit',__('Edit this event')). 
     78               dcPage::jsVar('eventdataEditor.prototype.text_action_remove',__('Delete this event')). 
     79               dcPage::jsVar('eventdataEditor.prototype.text_action_add',__('Add this event')). 
     80               dcPage::jsVar('eventdataEditor.prototype.title_list',__('Linked events')). 
     81               "\n//]]>\n". 
     82               "</script>\n" 
     83          :  
     84               dcPage::jsLoad(DC_ADMIN_URL.'?pf=eventdata/js/admin.js') 
     85          ). 
     86          dcPage::jsLoad(DC_ADMIN_URL.'?pf=eventdata/js/datepickerBC.js'). 
    7187          '<script type="text/javascript">'."\n". 
    7288          "//<![CDATA[\n". 
     
    100116     public static function adminPostFormSidebar(&$post) 
    101117     { 
     118          # New event 
     119          $start = empty($_POST['eventdata_start']) ? '' : $_POST['eventdata_start']; 
     120          $end = empty($_POST['eventdata_end']) ? '' : $_POST['eventdata_end']; 
     121          $location = empty($_POST['eventdata_location']) ? '' : $_POST['eventdata_location']; 
     122          echo  
     123          '<div id="new-eventdata">'. 
     124          '<h3>'.__('Add event').'</h3>'. 
     125          '<p>'. 
     126          '<label for="eventdata_start">'.__('Event start:').'</label>'. 
     127          '<div class="p" id="eventdata-edit-start">'.form::textarea('eventdata_start',20,1,$start,'',9).'</div>'. 
     128          '<label for="eventdata_end">'.__('Event end:').   '</label>'. 
     129          '<div class="p" id="eventdata-edit-end">'.form::textarea('eventdata_end',20,1,$end,'',10).'</div>'. 
     130          '<label for="eventdata_location">'.__('Event location:').'</label>'. 
     131          '<div class="p" id="eventdata-edit-location">'.form::textarea('eventdata_location',20,1,$location,'',10).'</div>'. 
     132          '</p>'. 
     133          '</div>'; 
     134 
     135          # Know events 
    102136          $post_id = $post ? (integer) $post->post_id : -1; 
    103           # Know events 
    104137          $eventdata = new dcEventdata($GLOBALS['core']); 
    105138          $eventdatas = $eventdata->getEventdata('eventdata',null,null,null,$post_id); 
     
    112145                    echo  
    113146                    '<div class="eventdatas-list">'. 
    114                     '  <div class="action">'. 
    115                            form::checkbox('eventdatas[]',$eventdatas->eventdata_start.','.$eventdatas->eventdata_end,'','','',false,' title="'.__('Check to delete').'"'). 
    116                     '  </div>'. 
    117                     '  '.__('Begin:').' <span class="green">'.dt::dt2str(__('%Y-%m-%d %H:%M'),$eventdatas->eventdata_start).'</span><br />'. 
    118                     '  '.__('End:').' <span class="red">'.dt::dt2str(__('%Y-%m-%d %H:%M'),$eventdatas->eventdata_end).'</span><br />'. 
    119                     ('' != $eventdatas->eventdata_location ? '  '.__('Location:').'<span>'.text::cutString(html::escapeHTML($eventdatas->eventdata_location),40).'</span><br />' : ''). 
     147                    '<span class="eventdata-action-remove">'. 
     148                    form::checkbox('eventdatas[]',$eventdatas->eventdata_start.','.$eventdatas->eventdata_end,'','','',false,' title="'.__('Check to delete').'"'). 
     149                    '</span>'. 
     150                    '<a class="eventdata-action-edit" href="plugin.php?p=eventdata&eventdata='. 
     151                         dcEventdata::serializeURL('eventdata',$eventdatas->post_id,$eventdatas->eventdata_start,$eventdatas->eventdata_end,$eventdatas->eventdata_location). 
     152                    '">[v]</a>'. 
     153                    dt::dt2str(__('%Y-%m-%d %H:%M'),$eventdatas->eventdata_start). 
     154                    '<br />'.dt::dt2str(__('%Y-%m-%d %H:%M'),$eventdatas->eventdata_end). 
     155                    ('' != $eventdatas->eventdata_location ? '<br />'.text::cutString(html::escapeHTML($eventdatas->eventdata_location),40) : ''). 
    120156                    '</div>'; 
    121157                    $i++; 
     
    123159               echo '</div>'; 
    124160          } 
    125  
    126           # New event 
    127           $start = empty($_POST['eventdata_start']) ? '' : $_POST['eventdata_start']; 
    128           $end = empty($_POST['eventdata_end']) ? '' : $_POST['eventdata_end']; 
    129           $location = empty($_POST['eventdata_location']) ? '' : $_POST['eventdata_location']; 
    130           echo  
    131           '<h3 id="new-eventdata">'.__('Add event').'</h3>'. 
    132           '<p>'. 
    133           '<div class="p"><label for="eventdata_start">'.__('Event start:').'</label>'. 
    134           form::field('eventdata_start',16,16,$start,'',9).'</div>'. 
    135           '<div class="p"><label for="eventdata_end">'.__('Event end:').   '</label>'. 
    136           form::field('eventdata_end',16,16,$end,'',10).'</div>'. 
    137           '<div class="p"><label for="eventdata_location">'.__('Event location:').'</label>'. 
    138           form::field('eventdata_location',20,200,$location,'',10).'</div>'. 
    139           '</p>'; 
     161     } 
     162     # Test new events of new post from post.php (from javascript) 
     163     public static function adminBeforePostCreate(&$cur) 
     164     { 
     165          if (isset($_POST['eventdata_hide']) && !empty($_POST['eventdata_hide'])) { 
     166 
     167               $records = explode('[f]',$_POST['eventdata_hide']); 
     168               foreach($records AS $record) { 
     169 
     170                    $fields = explode('||',$record); 
     171                    if (isset($fields[0]) && isset($fields[1]) && !empty($fields[0]) && !empty($fields[1])) { 
     172 
     173                         if (FALSE === strtotime($fields[0]) || FALSE === strtotime($fields[1]) ) 
     174                              throw new Exception('Wrong date format'); 
     175 
     176                         if (strtotime($fields[0]) > strtotime($fields[1])) 
     177                              throw new Exception('Start date of event must be smaller than end date of event'); 
     178                    } 
     179               } 
     180          } 
     181     }     
     182     # Save new events of new post from post.php (from javascript) 
     183     public static function adminAfterPostCreate(&$cur,&$post_id) 
     184     { 
     185          $eventdata = new dcEventdata($GLOBALS['core']); 
     186          $post_id = (integer) $post_id; 
     187 
     188          if (isset($_POST['eventdata_hide']) && !empty($_POST['eventdata_hide'])) { 
     189 
     190               $records = explode('[f]',$_POST['eventdata_hide']); 
     191               foreach($records AS $record) { 
     192 
     193                    $fields = explode('||',$record); 
     194                    if (isset($fields[0]) && isset($fields[1]) && !empty($fields[0]) && !empty($fields[1])) { 
     195 
     196                         $start = date('Y-m-d H:i:00',strtotime($fields[0])); 
     197                         $end = date('Y-m-d H:i:00',strtotime($fields[1])); 
     198                         $location = isset($fields[2]) ? $fields[2] : ''; 
     199 
     200                         $eventdata->delEventdata('eventdata',$post_id,$start,$end,$location); 
     201                         $eventdata->setEventdata('eventdata',$post_id,$start,$end,$location); 
     202                    } 
     203               } 
     204          } 
    140205     } 
    141206     # Save or update for post.php 
     
    162227               $location = isset($_POST['eventdata_location']) ? $_POST['eventdata_location'] : ''; 
    163228 
     229               $eventdata->delEventdata('eventdata',$post_id,$start,$end,$location); 
    164230               $eventdata->setEventdata('eventdata',$post_id,$start,$end,$location); 
    165231          } 
     
    177243     # Delete for post.php 
    178244     public static function adminBeforePostDelete(&$post_id) 
    179      { 
     245     {echo 'la';exit(1); 
    180246          $post_id = (integer) $post_id; 
    181247          $eventdata = new dcEventdata($GLOBALS['core']); 
     
    214280 
    215281                    while ($posts->fetch()) { 
     282                         $eventdata->delEventdata('eventdata',$posts->post_id,$start,$end,$location); 
    216283                         $eventdata->setEventdata('eventdata',$posts->post_id,$start,$end,$location); 
    217284                    } 
     
    244311 
    245312          echo  
    246           self::adminPostHeaders(). 
     313          self::adminPostHeaders(false). 
    247314          '<link rel="stylesheet" type="text/css" href="style/date-picker.css" />'."\n". 
    248315          '<div id="edit-eventdata">'. 
    249316          '<h3>'.__('Add event').'</h3>'. 
    250           '<div class="p">'. 
    251317          '<form action="posts_actions.php" method="post">'. 
    252           '<p><label>'.__('Event start:'). 
    253           form::field('eventdata_start',16,16,$start,'eventdata-date-start',9). 
    254           '</label></p>'. 
    255           '<p><label>'.__('Event end:'). 
    256           form::field('eventdata_end',16,16,$end,'eventdata-date-end',10). 
    257           '</label></p>'. 
    258           '<p><label>'.__('Event location:'). 
    259           form::field('eventdata_location',20,200,$location,'eventdata-date-location',10). 
    260           '</label></p>'. 
    261           '</div>'. 
     318          '<p>'. 
     319          '<label for="eventdata_start">'.__('Event start:').'</label>'. 
     320          '<div class="p" id="eventdata-edit-start">'.form::field('eventdata_start',16,16,$start,'eventdata-date-start',9).'</div>'. 
     321          '<label for="eventdata_end">'.__('Event end:').   '</label>'. 
     322          '<div class="p" id="eventdata-edit-end">'.form::field('eventdata_end',16,16,$end,'eventdata-date-end',10).'</div>'. 
     323          '<label for="eventdata_location">'.__('Event location:').'</label>'. 
     324          '<div class="p" id="eventdata-edit-location">'.form::field('eventdata_location',20,200,$location,'eventdata-date-location',10).'</div>'. 
     325          '</p>'. 
    262326          $hidden_fields. 
    263327          $core->formNonce(). 
    264328          form::hidden(array('action'),'eventdata_add'). 
    265           '<input type="submit" value="'.__('save').'" /></p>'. 
     329          '<input type="submit" value="'.__('Save').'" /></p>'. 
    266330          '</form>'. 
    267331          '</div>'; 
  • plugins/eventdata/_define.php

    r1017 r1025  
    1717     /* Description*/         "Add period to your posts", 
    1818     /* Author */             "JC Denis", 
    19      /* Version */            '0.4.1', 
     19     /* Version */            '0.5.0', 
    2020     /* Permissions */        'usage,contentadmin' 
    2121); 
    22      /* date */          #20090413 
     22     /* date */          #20090414 
    2323?> 
  • plugins/eventdata/inc/class.dc.eventdata.php

    r1017 r1025  
    2424     } 
    2525 
     26     public static function serializeURL($type='',$post='',$start='',$end='',$location='') 
     27     { 
     28          return urlencode(serialize(array('type'=>$type,'post'=>$post,'start'=>$start,'end'=>$end,'location'=>$location))); 
     29     } 
     30 
     31     public static function unserializeURL($url='') 
     32     { 
     33          $rs = @unserialize(urldecode($url)); 
     34          return array( 
     35               'type' => (isset($rs['type']) ? $rs['type'] : ''), 
     36               'post' => (isset($rs['post']) ? $rs['post'] : null), 
     37               'start' => (isset($rs['start']) ? $rs['start'] : ''), 
     38               'end' => (isset($rs['end']) ? $rs['end'] : ''), 
     39               'location' => (isset($rs['location']) ? $rs['location'] : '') 
     40          ); 
     41     } 
     42 
    2643     public function getEventdata($type=null,$limit=null,$eventdata_start=null,$eventdata_end=null,$post_id=null,$period=null,$sort='desc') 
    2744     { 
    28           $strReq = 'SELECT eventdata_start, eventdata_end, eventdata_type, eventdata_location, COUNT(EV.post_id) as count '. 
     45          $strReq = 'SELECT P.post_id AS post_id, eventdata_start, eventdata_end, eventdata_type, eventdata_location, COUNT(EV.post_id) as count '. 
    2946          'FROM '.$this->table.' EV LEFT JOIN '.$this->core->prefix.'post P '. 
    3047          'ON EV.post_id = P.post_id '. 
  • plugins/eventdata/inc/class.dc.eventdata.rest.php

    r1017 r1025  
    2626 
    2727          $eventdata = new dcEventdata($core); 
    28           $rs = $eventdata->getEventdata($eventdataType,$limit,$eventdataStart,$eventdataEnd,$postId,$eventdataPeriod,$eventdataLocation); 
     28          $rs = $eventdata->getEventdata($eventdataType,$limit,$eventdataStart,$eventdataEnd,$postId,$eventdataPeriod); 
    2929 
    3030          $sortby = explode(',',$sortby); 
     
    5454               $xe->end = $rs->eventdata_end; 
    5555               $xe->location = $rs->eventdata_location; 
     56               $xe->serializedURL = dcEventdata::serializeURL( 
     57                    $rs->eventdata_type, 
     58                    $rs->post_id, 
     59                    $rs->eventdata_start, 
     60                    $rs->eventdata_end, 
     61                    $rs->eventdata_location); 
     62               $xe->CDATA('[f]'.$rs->eventdata_start.'||'.$rs->eventdata_end.'||'.$rs->eventdata_location); 
    5663               $rsp->insertNode($xe); 
    5764          } 
  • plugins/eventdata/inc/lib.eventdata.list.php

    r1017 r1025  
    145145                    # Title 
    146146                    form::checkbox(array('entries[]'),$this->rs->post_id,'','','',!$this->rs->isEditable()) =>  'class="nowrap"', 
    147                     '<a href="'.$this->core->getPostAdminURL($this->rs->post_type,$this->rs->post_id).'">'.html::escapeHTML($this->rs->post_title).'</a>' =>  'class="maximal"', 
     147                    '<a href="'.$this->core->getPostAdminURL($this->rs->post_type,$this->rs->post_id).'">'.html::escapeHTML($this->rs->post_title).'</a>' =>  'class="maximal nowrap"', 
    148148                    # Edit 
    149149                    '<a title="'.__('Edit this event for all entries').'" href="plugin.php?p=eventdata&eventdata='. 
    150                          urlencode(serialize(array( 
    151                               'post'=>null, 
    152                               'start'=>$this->rs->eventdata_start, 
    153                               'end'=>$this->rs->eventdata_end, 
    154                               'location'=>$this->rs->eventdata_location 
    155                          ))).'"><img src="index.php?pf=eventdata/inc/img/edit-all.png">'. 
     150                         dcEventdata::serializeURL('eventdata',null,$this->rs->eventdata_start,$this->rs->eventdata_end,$this->rs->eventdata_location). 
     151                         '"><img src="index.php?pf=eventdata/inc/img/edit-all.png">'. 
    156152                    '</a> <a title="'.__('Edit this event for this entry').'" href="plugin.php?p=eventdata&eventdata='. 
    157                          urlencode(serialize(array( 
    158                               'post'=>$this->rs->post_id, 
    159                               'start'=>$this->rs->eventdata_start, 
    160                               'end'=>$this->rs->eventdata_end, 
    161                               'location'=>$this->rs->eventdata_location 
    162                          ))).'"><img src="index.php?pf=eventdata/inc/img/edit-one.png"></a>' => 'class="nowrap"', 
     153                         dcEventdata::serializeURL('eventdata',$this->rs->post_id,$this->rs->eventdata_start,$this->rs->eventdata_end,$this->rs->eventdata_location). 
     154                         '"><img src="index.php?pf=eventdata/inc/img/edit-one.png"></a>' => 'class="nowrap"', 
    163155                    # Start 
    164156                    dt::dt2str(__('%Y-%m-%d %H:%M'),$this->rs->eventdata_start) => 'class="nowrap"', 
  • plugins/eventdata/index.php

    r1017 r1025  
    7272$combo_action = array(); 
    7373if ($core->auth->check('delete,contentadmin',$GLOBALS['core']->blog->id)) { 
    74      $combo_action[__('remove events')] = 'event_remove'; 
     74     $combo_action[__('remove events')] = 'eventdata_remove'; 
    7575} 
    7676if ($core->auth->check('publish,contentadmin',$core->blog->id)) { 
     77     $combo_action[__('add event')] = 'eventdata_add'; 
    7778     $combo_action[__('publish')] = 'publish'; 
    7879     $combo_action[__('unpublish')] = 'unpublish'; 
     
    180181 
    181182if (isset($_GET['eventdata'])) { 
    182      $get_eventdata = @unserialize(@urldecode($_GET['eventdata'])); 
    183      if (is_array($get_eventdata)) { 
    184           $params['post_id'] = $get_eventdata['post']; 
    185           $params['eventdata_start'] = $get_eventdata['start']; 
    186           $params['eventdata_end'] = $get_eventdata['end']; 
    187           $params['eventdata_location'] = $get_eventdata['location']; 
    188           $edit_eventdata = true; 
    189           $_REQUEST['t'] = 'pst'; 
    190      } 
     183     $get_eventdata = dcEventdata::unserializeURL($_GET['eventdata']); 
     184     $params['post_id'] = $get_eventdata['post']; 
     185     $params['eventdata_start'] = $get_eventdata['start']; 
     186     $params['eventdata_end'] = $get_eventdata['end']; 
     187     $params['eventdata_location'] = $get_eventdata['location']; 
     188     $edit_eventdata = true; 
     189     $_REQUEST['t'] = 'pst'; 
    191190     unset($get_eventdata); 
    192191} 
     
    329328          '<div class="multi-part" id="pst" title="'.$tab['pst'].'">'. 
    330329          '<p><a href="'.$E->url.'&t=pst">'.__('Back to list of all events').'</a></p>'. 
    331           eventdataAdminBehaviors::adminPostHeaders(). 
     330          eventdataAdminBehaviors::adminPostHeaders(false). 
    332331          '<link rel="stylesheet" type="text/css" href="style/date-picker.css" />'."\n". 
    333332          '<div id="edit-eventdata">'. 
     
    335334               __('Edit this event for this entry') : 
    336335               __('Edit this event for all entries')).'</h3>'. 
    337           '<div class="p">'. 
    338336          '<form action="'.$E->url.'" method="post">'. 
    339           '<p><label>'.__('Event start:'). 
    340           form::field('eventdata_start',16,16,$posts->eventdata_start,'eventdata-date-start',9). 
    341           '</label></p>'. 
    342           '<p><label>'.__('Event end:'). 
    343           form::field('eventdata_end',16,16,$posts->eventdata_end,'eventdata-date-end',10). 
    344           '</label></p>'. 
    345           '<p><label>'.__('Event location:'). 
    346           form::field('eventdata_location',20,200,$posts->eventdata_location,'eventdata-date-location',10). 
    347           '</label></p>'. 
    348           '</div>'. 
     337          '<p>'. 
     338          '<label for="eventdata_start">'.__('Event start:').'</label>'. 
     339          '<div class="p" id="eventdata-edit-start">'.form::field('eventdata_start',16,16,$posts->eventdata_start,'eventdata-date-start',9).'</div>'. 
     340          '<label for="eventdata_end">'.__('Event end:').   '</label>'. 
     341          '<div class="p" id="eventdata-edit-end">'.form::field('eventdata_end',16,16,$posts->eventdata_end,'eventdata-date-end',10).'</div>'. 
     342          '<label for="eventdata_location">'.__('Event location:').'</label>'. 
     343          '<div class="p" id="eventdata-edit-location">'.form::field('eventdata_location',20,200,$posts->eventdata_location,'eventdata-date-location',10).'</div>'. 
     344          '</p>'. 
    349345          form::hidden('p','eventdata'). 
    350346          form::hidden('t','pst'). 
     
    515511     form::hidden('t','tpl'). 
    516512     $core->formNonce().' 
    517      <input type="submit" name="save[tpl]" value="'.__('Save configuration').'" /> 
     513     <input type="submit" name="save[tpl]" value="'.__('Save').'" /> 
    518514     </form> 
    519515     </div>'; 
     
    581577     form::hidden('t','adm'). 
    582578     $core->formNonce().' 
    583      <input type="submit" name="save[adm]" value="'.__('Save configuration').'" /></p> 
     579     <input type="submit" name="save[adm]" value="'.__('Save').'" /></p> 
    584580     </form> 
    585581     </div>'; 
  • plugins/eventdata/js/datepickerBC.js

    r960 r1025  
    1 /* 
    2 # -- BEGIN LICENSE BLOCK ---------------------------------- 
    3 # This file is part of eventdata, a plugin for Dotclear 2. 
    4 # 
    5 # Copyright (c) 2009 JC Denis and contributors 
    6 # jcdenis@gdwd.com 
    7 # 
    8 # Licensed under the GPL version 2.0 license. 
    9 # A copy of this license is available in LICENSE file or at 
    10 # http://www.gnu.org/licenses/old-licenses/gpl-2.0.html 
    11 # -- END LICENSE BLOCK ------------------------------------ 
    12 */ 
    13 function datePickerB(target){ 
    14      if(!document.getElementById){return;} 
    15      if(!target||target.nodeName.toLowerCase()!='input'){return;} 
    16      this.target=target;this.oTable.id='dc_datepickerB';this.oTable.className='date-picker';var cur=1;var oRow,oHeading,oSpan;oRow=document.createElement('tr');oHeading=document.createElement('th');oHeading.colSpan=4;oHeading.className='date-picker-month';var nav=document.createElement('span');nav.appendChild(document.createTextNode(String.fromCharCode(171)));nav.fn=this.changeMonth;nav.obj=this;nav.onclick=function(){this.fn.call(this.obj,-1);};nav.className='date-picker-control';oHeading.appendChild(nav);oHeading.appendChild(document.createTextNode(String.fromCharCode(160)));nav=document.createElement('span');nav.appendChild(document.createTextNode(String.fromCharCode(187)));nav.fn=this.changeMonth;nav.obj=this;nav.onclick=function(){this.fn.call(this.obj,+1);};nav.className='date-picker-control';oHeading.appendChild(nav);oHeading.appendChild(document.createTextNode(String.fromCharCode(160)));oHeading.appendChild(this.oMonth);oRow.appendChild(oHeading);oHeading=document.createElement('th');oHeading.colSpan=3;oHeading.className='date-picker-year';oHeading.appendChild(this.oYear);oHeading.appendChild(document.createTextNode(String.fromCharCode(160)));nav=document.createElement('span');nav.appendChild(document.createTextNode(String.fromCharCode(171)));nav.fn=this.changeYear;nav.obj=this;nav.onclick=function(){this.fn.call(this.obj,-1);};nav.className='date-picker-control';oHeading.appendChild(nav);oHeading.appendChild(document.createTextNode(String.fromCharCode(160)));nav=document.createElement('span');nav.appendChild(document.createTextNode(String.fromCharCode(187)));nav.fn=this.changeYear;nav.obj=this;nav.onclick=function(){this.fn.call(this.obj,+1);};nav.className='date-picker-control';oHeading.appendChild(nav);oRow.appendChild(oHeading);this.oBody.appendChild(oRow);oRow=document.createElement('tr');var cday;for(i=0;i<this.days.length;i++){cday=this.days[i].substring(0,1).toUpperCase();oHeading=document.createElement('th');oHeading.appendChild(document.createTextNode(cday));oHeading.setAttribute('title',this.days[i]);oRow.appendChild(oHeading);} 
    17      this.oBody.appendChild(oRow);for(var i=0;i<6;i++){oRow=document.createElement('tr');for(var j=0;j<7;j++){this.oDates[cur]=document.createElement('td');this.oDates[cur].appendChild(document.createTextNode(String.fromCharCode(160)));oRow.appendChild(this.oDates[cur]);cur++;} 
    18      this.oBody.appendChild(oRow);} 
    19      oRow=document.createElement('tr');oHeading=document.createElement('th');oHeading.className='date-picker-control';oHeading.appendChild(document.createTextNode('!'));oHeading.setAttribute('title',this.now_msg);oHeading.fn=this.sendNow;oHeading.obj=this;oHeading.onclick=function(){this.fn.call(this.obj);};oRow.appendChild(oHeading);oHeading=document.createElement('th');oHeading.colSpan=5;oSpan=document.createElement('span');oSpan.className='date-picker-control';oSpan.appendChild(document.createTextNode('-'));oSpan.fn=this.changeHour;oSpan.obj=this;oSpan.onclick=function(){this.fn.call(this.obj,-1);};oHeading.appendChild(oSpan);oHeading.appendChild(document.createTextNode(String.fromCharCode(160)));oSpan=document.createElement('span');oSpan.className='date-picker-control';oSpan.appendChild(document.createTextNode('+'));oSpan.fn=this.changeHour;oSpan.obj=this;oSpan.onclick=function(){this.fn.call(this.obj,+1);};oHeading.appendChild(oSpan);oHeading.appendChild(document.createTextNode(String.fromCharCode(160)));this.oHour.size=3;oHeading.appendChild(this.oHour);oHeading.appendChild(document.createTextNode(' : '));this.oMinute.size=3;oHeading.appendChild(this.oMinute);oHeading.appendChild(document.createTextNode(String.fromCharCode(160)));oSpan=document.createElement('span');oSpan.className='date-picker-control';oSpan.appendChild(document.createTextNode('-'));oSpan.fn=this.changeMinute;oSpan.obj=this;oSpan.onclick=function(){this.fn.call(this.obj,-1);};oHeading.appendChild(oSpan);oHeading.appendChild(document.createTextNode(String.fromCharCode(160)));oSpan=document.createElement('span');oSpan.className='date-picker-control';oSpan.appendChild(document.createTextNode('+'));oSpan.fn=this.changeMinute;oSpan.obj=this;oSpan.onclick=function(){this.fn.call(this.obj,+1);};oHeading.appendChild(oSpan);oRow.appendChild(oHeading);oHeading=document.createElement('th');oHeading.className='date-picker-control';oHeading.appendChild(document.createTextNode('x'));oHeading.setAttribute('title',this.close_msg);oHeading.fn=this.close;oHeading.obj=this;oHeading.onclick=function(){this.fn.call(this.obj);};oRow.appendChild(oHeading);this.oBody.appendChild(oRow); 
    20 }; 
    21 datePickerB.prototype={year:0,month:0,day:0,hour:0,minute:0,img_src:'',img_top:'0.2em',now_msg:'now',close_msg:'close',days:new Array('Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday'),months:new Array('January','February','March','April','May','June','July','August','September','October','November','December'),oTable:document.createElement('table'),oBody:document.createElement('tbody'),oDates:new Array(),oMonth:document.createElement('span'),oYear:document.createElement('span'),oHour:document.createElement('input'),oMinute:document.createElement('input'),setDate:function(){if(this.numberOfDays()<this.day){this.day=this.numberOfDays();} 
    22      while(this.oYear.hasChildNodes()){this.oYear.removeChild(this.oYear.firstChild)} 
    23      this.oYear.appendChild(document.createTextNode(this.year));while(this.oMonth.hasChildNodes()){this.oMonth.removeChild(this.oMonth.firstChild)} 
    24      this.oMonth.appendChild(document.createTextNode(this.months[this.month-1]));var firstDay=this.firstDay();var nbDays=this.numberOfDays();for(var i=1;i<=42;i++){while(this.oDates[i].hasChildNodes()){this.oDates[i].removeChild(this.oDates[i].firstChild)} 
    25      this.oDates[i].appendChild(document.createTextNode('-'));this.oDates[i].className='';this.oDates[i].onclick=function(){return;};} 
    26      for(i=1;i<=nbDays;i++){var j=firstDay+i-1;while(this.oDates[j].hasChildNodes()){this.oDates[j].removeChild(this.oDates[j].firstChild)} 
    27      this.oDates[j].appendChild(document.createTextNode(i));this.oDates[j].index=i;this.oDates[j].fn=this.sendDate;this.oDates[j].obj=this;this.oDates[j].onclick=function(){this.fn.call(this.obj,this.index);};if(i==this.day){this.oDates[j].className='date-picker-today';}else{this.oDates[j].className='date-picker-day';}} 
    28      this.setHour(this.hour);this.setMinute(this.minute);},setHour:function(h){if(h<0){h=23;} 
    29      if(h>23){h=0;} 
    30      if(h<10){h='0'+h;} 
    31      this.hour=h*1;this.oHour.value=h;},setMinute:function(m){if(m<0){m=59;} 
    32      if(m>59){m=0;} 
    33      if(m<10){m='0'+m;} 
    34      this.minute=m*1;this.oMinute.value=m;},changeMonth:function(dir){var y=this.year;var m=this.month;m=m+dir;if(m>12){this.month=1;this.year++;} 
    35      else if(m<1){this.month=12;this.year--;} 
    36      else{this.month=m;} 
    37      this.setDate();},changeYear:function(dir){this.year=this.year+dir;this.setDate();},changeHour:function(dir){this.setHour(this.hour*1+dir);},changeMinute:function(dir){this.setMinute(this.minute*1+dir);},sendDate:function(d){var m=this.month;var hour=this.oHour.value*1;var minute=this.oMinute.value*1;if(hour<0||hour>23||isNaN(hour)){hour=0;} 
    38      if(minute<0||minute>59||isNaN(minute)){minute=0;} 
    39      if(m<10){m='0'+m;} 
    40      if(d<10){d='0'+d;} 
    41      if(hour<10){hour='0'+hour;} 
    42      if(minute<10){minute='0'+minute;} 
    43      this.target.value=this.year+'-'+m+'-'+d+' '+hour+':'+minute;this.close();},sendNow:function(){var dt=new Date();var y=dt.getFullYear();var m=dt.getMonth()+1;var d=dt.getDate();var h=dt.getHours();var i=dt.getMinutes();if(m<10){m='0'+m;} 
    44      if(d<10){d='0'+d;} 
    45      if(h<10){h='0'+h;} 
    46      if(i<10){i='0'+i;} 
    47      this.target.value=y+'-'+m+'-'+d+' '+h+':'+i;this.close();},close:function(){document.body.removeChild(this.oTable);},numberOfDays:function(){var res=31;if(this.month==4||this.month==6||this.month==9||this.month==11){res=30;}else if(this.month==2){res=28;if(this.year%4==0&&(this.year%100!=0||this.year%400==0)){res=29;}} 
    48      return res;},firstDay:function(){var dt=new Date(this.year,this.month-1,1);var res=dt.getDay();if(res==0){res=7;} 
    49      return res;},show:function(){var re=/(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2})/;var match=re.exec(this.target.value);if(match){this.year=match[1]*1;this.month=match[2]*1;this.day=match[3]*1;this.hour=match[4]*1;this.minute=match[5]*1;}else{var dt=new Date();this.year=dt.getFullYear();this.month=dt.getMonth()+1;this.day=dt.getDate();this.hour=dt.getHours();this.minute=dt.getMinutes();} 
    50      this.oTable.appendChild(this.oBody);this.setDate();this.setPosition();document.body.appendChild(this.oTable);this.oHour.focus();},setPosition:function(){var t_x=this.findPosX(this.target);var t_y=this.findPosY(this.target);var o_h=this.oTable.offsetHeight;var o_w=this.oTable.offsetWidth;this.oTable.style.position='absolute';this.oTable.style.zIndex='100';this.oTable.style.top=t_y+'px';this.oTable.style.left=t_x+'px';},findPosX:function(obj){var curleft=0;if(obj.offsetParent){while(1){curleft+=obj.offsetLeft;if(!obj.offsetParent){break;} 
    51      obj=obj.offsetParent;}}else if(obj.x){curleft+=obj.x;} 
    52      return curleft;},findPosY:function(obj){var curtop=0;if(obj.offsetParent){while(1){curtop+=obj.offsetTop;if(!obj.offsetParent){break;} 
    53      obj=obj.offsetParent;}}else if(obj.y){curtop+=obj.y;} 
    54      return curtop;},draw:function(){var imgE=document.createElement('img');imgE.src=this.img_src;imgE.style.position='absolute';imgE.style.top=this.img_top;imgE.style.left=(this.target.clientWidth+4)+'px';imgE.obj=this;imgE.fn=this.show;imgE.onclick=function(){this.fn.apply(this.obj);};this.target.parentNode.style.position='relative';this.target.parentNode.insertBefore(imgE,this.target.nextSibling);} 
    55 }; 
    56  
    57 function datePickerC(target){ 
    58      if(!document.getElementById){return;} 
    59      if(!target||target.nodeName.toLowerCase()!='input'){return;} 
    60      this.target=target;this.oTable.id='dc_datepickerC';this.oTable.className='date-picker';var cur=1;var oRow,oHeading,oSpan;oRow=document.createElement('tr');oHeading=document.createElement('th');oHeading.colSpan=4;oHeading.className='date-picker-month';var nav=document.createElement('span');nav.appendChild(document.createTextNode(String.fromCharCode(171)));nav.fn=this.changeMonth;nav.obj=this;nav.onclick=function(){this.fn.call(this.obj,-1);};nav.className='date-picker-control';oHeading.appendChild(nav);oHeading.appendChild(document.createTextNode(String.fromCharCode(160)));nav=document.createElement('span');nav.appendChild(document.createTextNode(String.fromCharCode(187)));nav.fn=this.changeMonth;nav.obj=this;nav.onclick=function(){this.fn.call(this.obj,+1);};nav.className='date-picker-control';oHeading.appendChild(nav);oHeading.appendChild(document.createTextNode(String.fromCharCode(160)));oHeading.appendChild(this.oMonth);oRow.appendChild(oHeading);oHeading=document.createElement('th');oHeading.colSpan=3;oHeading.className='date-picker-year';oHeading.appendChild(this.oYear);oHeading.appendChild(document.createTextNode(String.fromCharCode(160)));nav=document.createElement('span');nav.appendChild(document.createTextNode(String.fromCharCode(171)));nav.fn=this.changeYear;nav.obj=this;nav.onclick=function(){this.fn.call(this.obj,-1);};nav.className='date-picker-control';oHeading.appendChild(nav);oHeading.appendChild(document.createTextNode(String.fromCharCode(160)));nav=document.createElement('span');nav.appendChild(document.createTextNode(String.fromCharCode(187)));nav.fn=this.changeYear;nav.obj=this;nav.onclick=function(){this.fn.call(this.obj,+1);};nav.className='date-picker-control';oHeading.appendChild(nav);oRow.appendChild(oHeading);this.oBody.appendChild(oRow);oRow=document.createElement('tr');var cday;for(i=0;i<this.days.length;i++){cday=this.days[i].substring(0,1).toUpperCase();oHeading=document.createElement('th');oHeading.appendChild(document.createTextNode(cday));oHeading.setAttribute('title',this.days[i]);oRow.appendChild(oHeading);} 
    61      this.oBody.appendChild(oRow);for(var i=0;i<6;i++){oRow=document.createElement('tr');for(var j=0;j<7;j++){this.oDates[cur]=document.createElement('td');this.oDates[cur].appendChild(document.createTextNode(String.fromCharCode(160)));oRow.appendChild(this.oDates[cur]);cur++;} 
    62      this.oBody.appendChild(oRow);} 
    63      oRow=document.createElement('tr');oHeading=document.createElement('th');oHeading.className='date-picker-control';oHeading.appendChild(document.createTextNode('!'));oHeading.setAttribute('title',this.now_msg);oHeading.fn=this.sendNow;oHeading.obj=this;oHeading.onclick=function(){this.fn.call(this.obj);};oRow.appendChild(oHeading);oHeading=document.createElement('th');oHeading.colSpan=5;oSpan=document.createElement('span');oSpan.className='date-picker-control';oSpan.appendChild(document.createTextNode('-'));oSpan.fn=this.changeHour;oSpan.obj=this;oSpan.onclick=function(){this.fn.call(this.obj,-1);};oHeading.appendChild(oSpan);oHeading.appendChild(document.createTextNode(String.fromCharCode(160)));oSpan=document.createElement('span');oSpan.className='date-picker-control';oSpan.appendChild(document.createTextNode('+'));oSpan.fn=this.changeHour;oSpan.obj=this;oSpan.onclick=function(){this.fn.call(this.obj,+1);};oHeading.appendChild(oSpan);oHeading.appendChild(document.createTextNode(String.fromCharCode(160)));this.oHour.size=3;oHeading.appendChild(this.oHour);oHeading.appendChild(document.createTextNode(' : '));this.oMinute.size=3;oHeading.appendChild(this.oMinute);oHeading.appendChild(document.createTextNode(String.fromCharCode(160)));oSpan=document.createElement('span');oSpan.className='date-picker-control';oSpan.appendChild(document.createTextNode('-'));oSpan.fn=this.changeMinute;oSpan.obj=this;oSpan.onclick=function(){this.fn.call(this.obj,-1);};oHeading.appendChild(oSpan);oHeading.appendChild(document.createTextNode(String.fromCharCode(160)));oSpan=document.createElement('span');oSpan.className='date-picker-control';oSpan.appendChild(document.createTextNode('+'));oSpan.fn=this.changeMinute;oSpan.obj=this;oSpan.onclick=function(){this.fn.call(this.obj,+1);};oHeading.appendChild(oSpan);oRow.appendChild(oHeading);oHeading=document.createElement('th');oHeading.className='date-picker-control';oHeading.appendChild(document.createTextNode('x'));oHeading.setAttribute('title',this.close_msg);oHeading.fn=this.close;oHeading.obj=this;oHeading.onclick=function(){this.fn.call(this.obj);};oRow.appendChild(oHeading);this.oBody.appendChild(oRow); 
    64 }; 
    65 datePickerC.prototype={year:0,month:0,day:0,hour:0,minute:0,img_src:'',img_top:'0.2em',now_msg:'now',close_msg:'close',days:new Array('Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday'),months:new Array('January','February','March','April','May','June','July','August','September','October','November','December'),oTable:document.createElement('table'),oBody:document.createElement('tbody'),oDates:new Array(),oMonth:document.createElement('span'),oYear:document.createElement('span'),oHour:document.createElement('input'),oMinute:document.createElement('input'),setDate:function(){if(this.numberOfDays()<this.day){this.day=this.numberOfDays();} 
    66      while(this.oYear.hasChildNodes()){this.oYear.removeChild(this.oYear.firstChild)} 
    67      this.oYear.appendChild(document.createTextNode(this.year));while(this.oMonth.hasChildNodes()){this.oMonth.removeChild(this.oMonth.firstChild)} 
    68      this.oMonth.appendChild(document.createTextNode(this.months[this.month-1]));var firstDay=this.firstDay();var nbDays=this.numberOfDays();for(var i=1;i<=42;i++){while(this.oDates[i].hasChildNodes()){this.oDates[i].removeChild(this.oDates[i].firstChild)} 
    69      this.oDates[i].appendChild(document.createTextNode('-'));this.oDates[i].className='';this.oDates[i].onclick=function(){return;};} 
    70      for(i=1;i<=nbDays;i++){var j=firstDay+i-1;while(this.oDates[j].hasChildNodes()){this.oDates[j].removeChild(this.oDates[j].firstChild)} 
    71      this.oDates[j].appendChild(document.createTextNode(i));this.oDates[j].index=i;this.oDates[j].fn=this.sendDate;this.oDates[j].obj=this;this.oDates[j].onclick=function(){this.fn.call(this.obj,this.index);};if(i==this.day){this.oDates[j].className='date-picker-today';}else{this.oDates[j].className='date-picker-day';}} 
    72      this.setHour(this.hour);this.setMinute(this.minute);},setHour:function(h){if(h<0){h=23;} 
    73      if(h>23){h=0;} 
    74      if(h<10){h='0'+h;} 
    75      this.hour=h*1;this.oHour.value=h;},setMinute:function(m){if(m<0){m=59;} 
    76      if(m>59){m=0;} 
    77      if(m<10){m='0'+m;} 
    78      this.minute=m*1;this.oMinute.value=m;},changeMonth:function(dir){var y=this.year;var m=this.month;m=m+dir;if(m>12){this.month=1;this.year++;} 
    79      else if(m<1){this.month=12;this.year--;} 
    80      else{this.month=m;} 
    81      this.setDate();},changeYear:function(dir){this.year=this.year+dir;this.setDate();},changeHour:function(dir){this.setHour(this.hour*1+dir);},changeMinute:function(dir){this.setMinute(this.minute*1+dir);},sendDate:function(d){var m=this.month;var hour=this.oHour.value*1;var minute=this.oMinute.value*1;if(hour<0||hour>23||isNaN(hour)){hour=0;} 
    82      if(minute<0||minute>59||isNaN(minute)){minute=0;} 
    83      if(m<10){m='0'+m;} 
    84      if(d<10){d='0'+d;} 
    85      if(hour<10){hour='0'+hour;} 
    86      if(minute<10){minute='0'+minute;} 
    87      this.target.value=this.year+'-'+m+'-'+d+' '+hour+':'+minute;this.close();},sendNow:function(){var dt=new Date();var y=dt.getFullYear();var m=dt.getMonth()+1;var d=dt.getDate();var h=dt.getHours();var i=dt.getMinutes();if(m<10){m='0'+m;} 
    88      if(d<10){d='0'+d;} 
    89      if(h<10){h='0'+h;} 
    90      if(i<10){i='0'+i;} 
    91      this.target.value=y+'-'+m+'-'+d+' '+h+':'+i;this.close();},close:function(){document.body.removeChild(this.oTable);},numberOfDays:function(){var res=31;if(this.month==4||this.month==6||this.month==9||this.month==11){res=30;}else if(this.month==2){res=28;if(this.year%4==0&&(this.year%100!=0||this.year%400==0)){res=29;}} 
    92      return res;},firstDay:function(){var dt=new Date(this.year,this.month-1,1);var res=dt.getDay();if(res==0){res=7;} 
    93      return res;},show:function(){var re=/(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2})/;var match=re.exec(this.target.value);if(match){this.year=match[1]*1;this.month=match[2]*1;this.day=match[3]*1;this.hour=match[4]*1;this.minute=match[5]*1;}else{var dt=new Date();this.year=dt.getFullYear();this.month=dt.getMonth()+1;this.day=dt.getDate();this.hour=dt.getHours();this.minute=dt.getMinutes();} 
    94      this.oTable.appendChild(this.oBody);this.setDate();this.setPosition();document.body.appendChild(this.oTable);this.oHour.focus();},setPosition:function(){var t_x=this.findPosX(this.target);var t_y=this.findPosY(this.target);var o_h=this.oTable.offsetHeight;var o_w=this.oTable.offsetWidth;this.oTable.style.position='absolute';this.oTable.style.zIndex='100';this.oTable.style.top=t_y+'px';this.oTable.style.left=t_x+'px';},findPosX:function(obj){var curleft=0;if(obj.offsetParent){while(1){curleft+=obj.offsetLeft;if(!obj.offsetParent){break;} 
    95      obj=obj.offsetParent;}}else if(obj.x){curleft+=obj.x;} 
    96      return curleft;},findPosY:function(obj){var curtop=0;if(obj.offsetParent){while(1){curtop+=obj.offsetTop;if(!obj.offsetParent){break;} 
    97      obj=obj.offsetParent;}}else if(obj.y){curtop+=obj.y;} 
    98      return curtop;},draw:function(){var imgE=document.createElement('img');imgE.src=this.img_src;imgE.style.position='absolute';imgE.style.top=this.img_top;imgE.style.left=(this.target.clientWidth+4)+'px';imgE.obj=this;imgE.fn=this.show;imgE.onclick=function(){this.fn.apply(this.obj);};this.target.parentNode.style.position='relative';this.target.parentNode.insertBefore(imgE,this.target.nextSibling);} 
    99 }; 
     1function datePickerB(target){if(!document.getElementById){return;} 
     2if(!target||target.nodeName.toLowerCase()!='input'){return;} 
     3this.target=target;this.oTable.id='dc_datepickerB';this.oTable.className='date-picker';var cur=1;var oRow,oHeading,oSpan;oRow=document.createElement('tr');oHeading=document.createElement('th');oHeading.colSpan=4;oHeading.className='date-picker-month';var nav=document.createElement('span');nav.appendChild(document.createTextNode(String.fromCharCode(171)));nav.fn=this.changeMonth;nav.obj=this;nav.onclick=function(){this.fn.call(this.obj,-1);};nav.className='date-picker-control';oHeading.appendChild(nav);oHeading.appendChild(document.createTextNode(String.fromCharCode(160)));nav=document.createElement('span');nav.appendChild(document.createTextNode(String.fromCharCode(187)));nav.fn=this.changeMonth;nav.obj=this;nav.onclick=function(){this.fn.call(this.obj,+1);};nav.className='date-picker-control';oHeading.appendChild(nav);oHeading.appendChild(document.createTextNode(String.fromCharCode(160)));oHeading.appendChild(this.oMonth);oRow.appendChild(oHeading);oHeading=document.createElement('th');oHeading.colSpan=3;oHeading.className='date-picker-year';oHeading.appendChild(this.oYear);oHeading.appendChild(document.createTextNode(String.fromCharCode(160)));nav=document.createElement('span');nav.appendChild(document.createTextNode(String.fromCharCode(171)));nav.fn=this.changeYear;nav.obj=this;nav.onclick=function(){this.fn.call(this.obj,-1);};nav.className='date-picker-control';oHeading.appendChild(nav);oHeading.appendChild(document.createTextNode(String.fromCharCode(160)));nav=document.createElement('span');nav.appendChild(document.createTextNode(String.fromCharCode(187)));nav.fn=this.changeYear;nav.obj=this;nav.onclick=function(){this.fn.call(this.obj,+1);};nav.className='date-picker-control';oHeading.appendChild(nav);oRow.appendChild(oHeading);this.oBody.appendChild(oRow);oRow=document.createElement('tr');var cday;for(i=0;i<this.days.length;i++){cday=this.days[i].substring(0,1).toUpperCase();oHeading=document.createElement('th');oHeading.appendChild(document.createTextNode(cday));oHeading.setAttribute('title',this.days[i]);oRow.appendChild(oHeading);} 
     4this.oBody.appendChild(oRow);for(var i=0;i<6;i++){oRow=document.createElement('tr');for(var j=0;j<7;j++){this.oDates[cur]=document.createElement('td');this.oDates[cur].appendChild(document.createTextNode(String.fromCharCode(160)));oRow.appendChild(this.oDates[cur]);cur++;} 
     5this.oBody.appendChild(oRow);} 
     6oRow=document.createElement('tr');oHeading=document.createElement('th');oHeading.className='date-picker-control';oHeading.appendChild(document.createTextNode('!'));oHeading.setAttribute('title',this.now_msg);oHeading.fn=this.sendNow;oHeading.obj=this;oHeading.onclick=function(){this.fn.call(this.obj);};oRow.appendChild(oHeading);oHeading=document.createElement('th');oHeading.colSpan=5;oSpan=document.createElement('span');oSpan.className='date-picker-control';oSpan.appendChild(document.createTextNode('-'));oSpan.fn=this.changeHour;oSpan.obj=this;oSpan.onclick=function(){this.fn.call(this.obj,-1);};oHeading.appendChild(oSpan);oHeading.appendChild(document.createTextNode(String.fromCharCode(160)));oSpan=document.createElement('span');oSpan.className='date-picker-control';oSpan.appendChild(document.createTextNode('+'));oSpan.fn=this.changeHour;oSpan.obj=this;oSpan.onclick=function(){this.fn.call(this.obj,+1);};oHeading.appendChild(oSpan);oHeading.appendChild(document.createTextNode(String.fromCharCode(160)));this.oHour.size=3;oHeading.appendChild(this.oHour);oHeading.appendChild(document.createTextNode(' : '));this.oMinute.size=3;oHeading.appendChild(this.oMinute);oHeading.appendChild(document.createTextNode(String.fromCharCode(160)));oSpan=document.createElement('span');oSpan.className='date-picker-control';oSpan.appendChild(document.createTextNode('-'));oSpan.fn=this.changeMinute;oSpan.obj=this;oSpan.onclick=function(){this.fn.call(this.obj,-1);};oHeading.appendChild(oSpan);oHeading.appendChild(document.createTextNode(String.fromCharCode(160)));oSpan=document.createElement('span');oSpan.className='date-picker-control';oSpan.appendChild(document.createTextNode('+'));oSpan.fn=this.changeMinute;oSpan.obj=this;oSpan.onclick=function(){this.fn.call(this.obj,+1);};oHeading.appendChild(oSpan);oRow.appendChild(oHeading);oHeading=document.createElement('th');oHeading.className='date-picker-control';oHeading.appendChild(document.createTextNode('x'));oHeading.setAttribute('title',this.close_msg);oHeading.fn=this.close;oHeading.obj=this;oHeading.onclick=function(){this.fn.call(this.obj);};oRow.appendChild(oHeading);this.oBody.appendChild(oRow);};datePickerB.prototype={year:0,month:0,day:0,hour:0,minute:0,img_src:'',img_top:'0.2em',now_msg:'now',close_msg:'close',days:new Array('Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday'),months:new Array('January','February','March','April','May','June','July','August','September','October','November','December'),oTable:document.createElement('table'),oBody:document.createElement('tbody'),oDates:new Array(),oMonth:document.createElement('span'),oYear:document.createElement('span'),oHour:document.createElement('input'),oMinute:document.createElement('input'),setDate:function(){if(this.numberOfDays()<this.day){this.day=this.numberOfDays();} 
     7while(this.oYear.hasChildNodes()){this.oYear.removeChild(this.oYear.firstChild)} 
     8this.oYear.appendChild(document.createTextNode(this.year));while(this.oMonth.hasChildNodes()){this.oMonth.removeChild(this.oMonth.firstChild)} 
     9this.oMonth.appendChild(document.createTextNode(this.months[this.month-1]));var firstDay=this.firstDay();var nbDays=this.numberOfDays();for(var i=1;i<=42;i++){while(this.oDates[i].hasChildNodes()){this.oDates[i].removeChild(this.oDates[i].firstChild)} 
     10this.oDates[i].appendChild(document.createTextNode('-'));this.oDates[i].className='';this.oDates[i].onclick=function(){return;};} 
     11for(i=1;i<=nbDays;i++){var j=firstDay+i-1;while(this.oDates[j].hasChildNodes()){this.oDates[j].removeChild(this.oDates[j].firstChild)} 
     12this.oDates[j].appendChild(document.createTextNode(i));this.oDates[j].index=i;this.oDates[j].fn=this.sendDate;this.oDates[j].obj=this;this.oDates[j].onclick=function(){this.fn.call(this.obj,this.index);};if(i==this.day){this.oDates[j].className='date-picker-today';}else{this.oDates[j].className='date-picker-day';}} 
     13this.setHour(this.hour);this.setMinute(this.minute);},setHour:function(h){if(h<0){h=23;} 
     14if(h>23){h=0;} 
     15if(h<10){h='0'+h;} 
     16this.hour=h*1;this.oHour.value=h;},setMinute:function(m){if(m<0){m=59;} 
     17if(m>59){m=0;} 
     18if(m<10){m='0'+m;} 
     19this.minute=m*1;this.oMinute.value=m;},changeMonth:function(dir){var y=this.year;var m=this.month;m=m+dir;if(m>12){this.month=1;this.year++;} 
     20else if(m<1){this.month=12;this.year--;} 
     21else{this.month=m;} 
     22this.setDate();},changeYear:function(dir){this.year=this.year+dir;this.setDate();},changeHour:function(dir){this.setHour(this.hour*1+dir);},changeMinute:function(dir){this.setMinute(this.minute*1+dir);},sendDate:function(d){var m=this.month;var hour=this.oHour.value*1;var minute=this.oMinute.value*1;if(hour<0||hour>23||isNaN(hour)){hour=0;} 
     23if(minute<0||minute>59||isNaN(minute)){minute=0;} 
     24if(m<10){m='0'+m;} 
     25if(d<10){d='0'+d;} 
     26if(hour<10){hour='0'+hour;} 
     27if(minute<10){minute='0'+minute;} 
     28this.target.value=this.year+'-'+m+'-'+d+' '+hour+':'+minute;this.close();},sendNow:function(){var dt=new Date();var y=dt.getFullYear();var m=dt.getMonth()+1;var d=dt.getDate();var h=dt.getHours();var i=dt.getMinutes();if(m<10){m='0'+m;} 
     29if(d<10){d='0'+d;} 
     30if(h<10){h='0'+h;} 
     31if(i<10){i='0'+i;} 
     32this.target.value=y+'-'+m+'-'+d+' '+h+':'+i;this.close();},close:function(){document.body.removeChild(this.oTable);},numberOfDays:function(){var res=31;if(this.month==4||this.month==6||this.month==9||this.month==11){res=30;}else if(this.month==2){res=28;if(this.year%4==0&&(this.year%100!=0||this.year%400==0)){res=29;}} 
     33return res;},firstDay:function(){var dt=new Date(this.year,this.month-1,1);var res=dt.getDay();if(res==0){res=7;} 
     34return res;},show:function(){var re=/(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2})/;var match=re.exec(this.target.value);if(match){this.year=match[1]*1;this.month=match[2]*1;this.day=match[3]*1;this.hour=match[4]*1;this.minute=match[5]*1;}else{var dt=new Date();this.year=dt.getFullYear();this.month=dt.getMonth()+1;this.day=dt.getDate();this.hour=dt.getHours();this.minute=dt.getMinutes();} 
     35this.oTable.appendChild(this.oBody);this.setDate();this.setPosition();document.body.appendChild(this.oTable);this.oHour.focus();},setPosition:function(){var t_x=this.findPosX(this.target);var t_y=this.findPosY(this.target);var o_h=this.oTable.offsetHeight;var o_w=this.oTable.offsetWidth;this.oTable.style.position='absolute';this.oTable.style.zIndex='100';this.oTable.style.top=t_y+'px';this.oTable.style.left=t_x+'px';},findPosX:function(obj){var curleft=0;if(obj.offsetParent){while(1){curleft+=obj.offsetLeft;if(!obj.offsetParent){break;} 
     36obj=obj.offsetParent;}}else if(obj.x){curleft+=obj.x;} 
     37return curleft;},findPosY:function(obj){var curtop=0;if(obj.offsetParent){while(1){curtop+=obj.offsetTop;if(!obj.offsetParent){break;} 
     38obj=obj.offsetParent;}}else if(obj.y){curtop+=obj.y;} 
     39return curtop;},draw:function(){var imgE=document.createElement('img');imgE.src=this.img_src;imgE.style.position='absolute';imgE.style.top=this.img_top;imgE.style.left=(this.target.clientWidth+4)+'px';imgE.obj=this;imgE.fn=this.show;imgE.onclick=function(){this.fn.apply(this.obj);};this.target.parentNode.style.position='relative';this.target.parentNode.insertBefore(imgE,this.target.nextSibling);}};function datePickerC(target){if(!document.getElementById){return;} 
     40if(!target||target.nodeName.toLowerCase()!='input'){return;} 
     41this.target=target;this.oTable.id='dc_datepickerC';this.oTable.className='date-picker';var cur=1;var oRow,oHeading,oSpan;oRow=document.createElement('tr');oHeading=document.createElement('th');oHeading.colSpan=4;oHeading.className='date-picker-month';var nav=document.createElement('span');nav.appendChild(document.createTextNode(String.fromCharCode(171)));nav.fn=this.changeMonth;nav.obj=this;nav.onclick=function(){this.fn.call(this.obj,-1);};nav.className='date-picker-control';oHeading.appendChild(nav);oHeading.appendChild(document.createTextNode(String.fromCharCode(160)));nav=document.createElement('span');nav.appendChild(document.createTextNode(String.fromCharCode(187)));nav.fn=this.changeMonth;nav.obj=this;nav.onclick=function(){this.fn.call(this.obj,+1);};nav.className='date-picker-control';oHeading.appendChild(nav);oHeading.appendChild(document.createTextNode(String.fromCharCode(160)));oHeading.appendChild(this.oMonth);oRow.appendChild(oHeading);oHeading=document.createElement('th');oHeading.colSpan=3;oHeading.className='date-picker-year';oHeading.appendChild(this.oYear);oHeading.appendChild(document.createTextNode(String.fromCharCode(160)));nav=document.createElement('span');nav.appendChild(document.createTextNode(String.fromCharCode(171)));nav.fn=this.changeYear;nav.obj=this;nav.onclick=function(){this.fn.call(this.obj,-1);};nav.className='date-picker-control';oHeading.appendChild(nav);oHeading.appendChild(document.createTextNode(String.fromCharCode(160)));nav=document.createElement('span');nav.appendChild(document.createTextNode(String.fromCharCode(187)));nav.fn=this.changeYear;nav.obj=this;nav.onclick=function(){this.fn.call(this.obj,+1);};nav.className='date-picker-control';oHeading.appendChild(nav);oRow.appendChild(oHeading);this.oBody.appendChild(oRow);oRow=document.createElement('tr');var cday;for(i=0;i<this.days.length;i++){cday=this.days[i].substring(0,1).toUpperCase();oHeading=document.createElement('th');oHeading.appendChild(document.createTextNode(cday));oHeading.setAttribute('title',this.days[i]);oRow.appendChild(oHeading);} 
     42this.oBody.appendChild(oRow);for(var i=0;i<6;i++){oRow=document.createElement('tr');for(var j=0;j<7;j++){this.oDates[cur]=document.createElement('td');this.oDates[cur].appendChild(document.createTextNode(String.fromCharCode(160)));oRow.appendChild(this.oDates[cur]);cur++;} 
     43this.oBody.appendChild(oRow);} 
     44oRow=document.createElement('tr');oHeading=document.createElement('th');oHeading.className='date-picker-control';oHeading.appendChild(document.createTextNode('!'));oHeading.setAttribute('title',this.now_msg);oHeading.fn=this.sendNow;oHeading.obj=this;oHeading.onclick=function(){this.fn.call(this.obj);};oRow.appendChild(oHeading);oHeading=document.createElement('th');oHeading.colSpan=5;oSpan=document.createElement('span');oSpan.className='date-picker-control';oSpan.appendChild(document.createTextNode('-'));oSpan.fn=this.changeHour;oSpan.obj=this;oSpan.onclick=function(){this.fn.call(this.obj,-1);};oHeading.appendChild(oSpan);oHeading.appendChild(document.createTextNode(String.fromCharCode(160)));oSpan=document.createElement('span');oSpan.className='date-picker-control';oSpan.appendChild(document.createTextNode('+'));oSpan.fn=this.changeHour;oSpan.obj=this;oSpan.onclick=function(){this.fn.call(this.obj,+1);};oHeading.appendChild(oSpan);oHeading.appendChild(document.createTextNode(String.fromCharCode(160)));this.oHour.size=3;oHeading.appendChild(this.oHour);oHeading.appendChild(document.createTextNode(' : '));this.oMinute.size=3;oHeading.appendChild(this.oMinute);oHeading.appendChild(document.createTextNode(String.fromCharCode(160)));oSpan=document.createElement('span');oSpan.className='date-picker-control';oSpan.appendChild(document.createTextNode('-'));oSpan.fn=this.changeMinute;oSpan.obj=this;oSpan.onclick=function(){this.fn.call(this.obj,-1);};oHeading.appendChild(oSpan);oHeading.appendChild(document.createTextNode(String.fromCharCode(160)));oSpan=document.createElement('span');oSpan.className='date-picker-control';oSpan.appendChild(document.createTextNode('+'));oSpan.fn=this.changeMinute;oSpan.obj=this;oSpan.onclick=function(){this.fn.call(this.obj,+1);};oHeading.appendChild(oSpan);oRow.appendChild(oHeading);oHeading=document.createElement('th');oHeading.className='date-picker-control';oHeading.appendChild(document.createTextNode('x'));oHeading.setAttribute('title',this.close_msg);oHeading.fn=this.close;oHeading.obj=this;oHeading.onclick=function(){this.fn.call(this.obj);};oRow.appendChild(oHeading);this.oBody.appendChild(oRow);};datePickerC.prototype={year:0,month:0,day:0,hour:0,minute:0,img_src:'',img_top:'0.2em',now_msg:'now',close_msg:'close',days:new Array('Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday'),months:new Array('January','February','March','April','May','June','July','August','September','October','November','December'),oTable:document.createElement('table'),oBody:document.createElement('tbody'),oDates:new Array(),oMonth:document.createElement('span'),oYear:document.createElement('span'),oHour:document.createElement('input'),oMinute:document.createElement('input'),setDate:function(){if(this.numberOfDays()<this.day){this.day=this.numberOfDays();} 
     45while(this.oYear.hasChildNodes()){this.oYear.removeChild(this.oYear.firstChild)} 
     46this.oYear.appendChild(document.createTextNode(this.year));while(this.oMonth.hasChildNodes()){this.oMonth.removeChild(this.oMonth.firstChild)} 
     47this.oMonth.appendChild(document.createTextNode(this.months[this.month-1]));var firstDay=this.firstDay();var nbDays=this.numberOfDays();for(var i=1;i<=42;i++){while(this.oDates[i].hasChildNodes()){this.oDates[i].removeChild(this.oDates[i].firstChild)} 
     48this.oDates[i].appendChild(document.createTextNode('-'));this.oDates[i].className='';this.oDates[i].onclick=function(){return;};} 
     49for(i=1;i<=nbDays;i++){var j=firstDay+i-1;while(this.oDates[j].hasChildNodes()){this.oDates[j].removeChild(this.oDates[j].firstChild)} 
     50this.oDates[j].appendChild(document.createTextNode(i));this.oDates[j].index=i;this.oDates[j].fn=this.sendDate;this.oDates[j].obj=this;this.oDates[j].onclick=function(){this.fn.call(this.obj,this.index);};if(i==this.day){this.oDates[j].className='date-picker-today';}else{this.oDates[j].className='date-picker-day';}} 
     51this.setHour(this.hour);this.setMinute(this.minute);},setHour:function(h){if(h<0){h=23;} 
     52if(h>23){h=0;} 
     53if(h<10){h='0'+h;} 
     54this.hour=h*1;this.oHour.value=h;},setMinute:function(m){if(m<0){m=59;} 
     55if(m>59){m=0;} 
     56if(m<10){m='0'+m;} 
     57this.minute=m*1;this.oMinute.value=m;},changeMonth:function(dir){var y=this.year;var m=this.month;m=m+dir;if(m>12){this.month=1;this.year++;} 
     58else if(m<1){this.month=12;this.year--;} 
     59else{this.month=m;} 
     60this.setDate();},changeYear:function(dir){this.year=this.year+dir;this.setDate();},changeHour:function(dir){this.setHour(this.hour*1+dir);},changeMinute:function(dir){this.setMinute(this.minute*1+dir);},sendDate:function(d){var m=this.month;var hour=this.oHour.value*1;var minute=this.oMinute.value*1;if(hour<0||hour>23||isNaN(hour)){hour=0;} 
     61if(minute<0||minute>59||isNaN(minute)){minute=0;} 
     62if(m<10){m='0'+m;} 
     63if(d<10){d='0'+d;} 
     64if(hour<10){hour='0'+hour;} 
     65if(minute<10){minute='0'+minute;} 
     66this.target.value=this.year+'-'+m+'-'+d+' '+hour+':'+minute;this.close();},sendNow:function(){var dt=new Date();var y=dt.getFullYear();var m=dt.getMonth()+1;var d=dt.getDate();var h=dt.getHours();var i=dt.getMinutes();if(m<10){m='0'+m;} 
     67if(d<10){d='0'+d;} 
     68if(h<10){h='0'+h;} 
     69if(i<10){i='0'+i;} 
     70this.target.value=y+'-'+m+'-'+d+' '+h+':'+i;this.close();},close:function(){document.body.removeChild(this.oTable);},numberOfDays:function(){var res=31;if(this.month==4||this.month==6||this.month==9||this.month==11){res=30;}else if(this.month==2){res=28;if(this.year%4==0&&(this.year%100!=0||this.year%400==0)){res=29;}} 
     71return res;},firstDay:function(){var dt=new Date(this.year,this.month-1,1);var res=dt.getDay();if(res==0){res=7;} 
     72return res;},show:function(){var re=/(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2})/;var match=re.exec(this.target.value);if(match){this.year=match[1]*1;this.month=match[2]*1;this.day=match[3]*1;this.hour=match[4]*1;this.minute=match[5]*1;}else{var dt=new Date();this.year=dt.getFullYear();this.month=dt.getMonth()+1;this.day=dt.getDate();this.hour=dt.getHours();this.minute=dt.getMinutes();} 
     73this.oTable.appendChild(this.oBody);this.setDate();this.setPosition();document.body.appendChild(this.oTable);this.oHour.focus();},setPosition:function(){var t_x=this.findPosX(this.target);var t_y=this.findPosY(this.target);var o_h=this.oTable.offsetHeight;var o_w=this.oTable.offsetWidth;this.oTable.style.position='absolute';this.oTable.style.zIndex='100';this.oTable.style.top=t_y+'px';this.oTable.style.left=t_x+'px';},findPosX:function(obj){var curleft=0;if(obj.offsetParent){while(1){curleft+=obj.offsetLeft;if(!obj.offsetParent){break;} 
     74obj=obj.offsetParent;}}else if(obj.x){curleft+=obj.x;} 
     75return curleft;},findPosY:function(obj){var curtop=0;if(obj.offsetParent){while(1){curtop+=obj.offsetTop;if(!obj.offsetParent){break;} 
     76obj=obj.offsetParent;}}else if(obj.y){curtop+=obj.y;} 
     77return curtop;},draw:function(){var imgE=document.createElement('img');imgE.src=this.img_src;imgE.style.position='absolute';imgE.style.top=this.img_top;imgE.style.left=(this.target.clientWidth+4)+'px';imgE.obj=this;imgE.fn=this.show;imgE.onclick=function(){this.fn.apply(this.obj);};this.target.parentNode.style.position='relative';this.target.parentNode.insertBefore(imgE,this.target.nextSibling);}}; 
  • plugins/eventdata/js/post.js

    r1017 r1025  
    1 /* 
    2 # -- BEGIN LICENSE BLOCK ---------------------------------- 
    3 # This file is part of eventdata, a plugin for Dotclear 2. 
    4 # 
    5 # Copyright (c) 2009 JC Denis and contributors 
    6 # jcdenis@gdwd.com 
    7 # 
    8 # Licensed under the GPL version 2.0 license. 
    9 # A copy of this license is available in LICENSE file or at 
    10 # http://www.gnu.org/licenses/old-licenses/gpl-2.0.html 
    11 # -- END LICENSE BLOCK ------------------------------------ 
    12 */ 
    13 /* # Used on plugin.php?pf=eventdata, post.php, post_ation.php */ 
    14 $(function(){ 
    15  
    16           var start_dtPick = new datePickerB($('#eventdata_start').get(0));  
    17           start_dtPick.img_top = '1.5em';  
    18           start_dtPick.draw();  
    19  
    20           var end_dtPick = new datePickerC($('#eventdata_end').get(0));  
    21           end_dtPick.img_top = '1.5em';  
    22           end_dtPick.draw();  
    23  
    24           $('#linked-eventdatas').toggleWithLegend($('#linked-eventdatas-form')); 
    25 }); 
     1$(function(){$('#edit-entry').onetabload(function(){$('#linked-eventdatas').remove();$('#linked-eventdatas-form').remove();$('#eventdata_hide').remove();var target_form=$('#new-eventdata');var target_start=$('#eventdata-edit-start');var target_end=$('#eventdata-edit-end');var target_location=$('#eventdata-edit-location');var event_field=null;var post_id=$('#id');post_id=(post_id.length>0)?post_id.get(0).value:false;if(target_start.length>0){if(post_id==false){event_field=$('<input type="hidden" name="eventdata_hide" />');event_field.val('[f]'+$('#eventdata_start').val()+'||'+$('#eventdata_end').val()+'||'+$('#eventdata_location').val());} 
     2var evEdit=new eventdataEditor(target_form,target_start,target_end,target_location,event_field);evEdit.displayEventdata('eventdata',post_id);}})});function eventdataEditor(target_form,target_start,target_end,target_location,event_field){this.target_form=target_form;this.target_start=target_start;this.target_end=target_end;this.target_location=target_location;this.event_field=event_field;};eventdataEditor.prototype={url_edit:'',title_list:'Linked events',text_confirm_remove:'Are you sure you want to remove this event?',text_action_add:'Add event to this entry',text_action_edit:'Edit this event',text_action_remove:'Delete this event',text_status_unsaved:'Waiting for save',text_status_none:'No event',type:null,dialog_start:null,dialog_end:null,dialog_location:null,target_form:null,target_start:null,target_end:null,target_location:null,event_field:null,post_id:false,service_uri:'services.php',displayEventdata:function(type,post_id){this.type=type;this.post_id=post_id;this.target_start.empty();this.target_end.empty();this.target_location.empty();this.dialog_start=$('<input type="text" />');this.dialog_end=$('<input type="text" />');this.dialog_location=$('<input type="text" />');var This=this;this.addEventdataDialog();if(this.post_id==false){this.target_form.append(this.event_field);} 
     3this.displayEventdataList();},displayEventdataList:function(){var li;if(this.new_list==undefined){this.new_title=$('<h3 id="linked-eventdatas">'+this.title_list+'</h3>');this.new_list=$('<div class="p" id="linked-eventdatas-form"></div>');this.target_form.append(this.new_title).append(this.new_list);this.new_title.toggleWithLegend(this.new_list);this.new_title.hide();} 
     4if(this.post_id==false){var ar_field=this.splitEventdataFields(this.event_field.val(),'[f]');this.new_list.empty();for(var i=0;i<ar_field.length;i++){li=$('<div class="eventdatas-list"></div>');var doit=false;var ar_value=this.splitEventdataFields(ar_field[i],'||');li.append('<span class="eventdata-waiting">'+this.text_status_unsaved+'</span>');for(var j=0;j<ar_value.length;j++){if(ar_value[j]!=''){li.append('<br />').append(ar_value[j]);doit=true;}} 
     5if(doit==true){a_remove=$('<a class="eventdata-action-remove" title="'+this.text_action_remove+'" href="#">[x]</a>');a_remove.get(0).caller=this;a_remove.get(0).new_id=ar_field[i];a_remove.click(function(){this.caller.removeEventdata(this.new_id);return false;});li.prepend(a_remove);this.new_list.append(li);this.new_title.show();}}}else{var This=this;var params={f:'getEventdata',eventdataType:this.type,sortby:'eventdata_start,asc',postId:this.post_id};$.get(this.service_uri,params,function(data){data=$(data);if(data.find('rsp').attr('status')!='ok'){return;} 
     6This.new_list.empty();data.find('eventdata').each(function(){li=$('<div class="eventdatas-list"></div>');var start=$(this).attr('start');var end=$(this).attr('end');var location=$(this).attr('location');var uri=$(this).attr('serializedURL');var field=start+'||'+end+'||'+location;li.append(start+'<br />'+end+'</br />'+location);li.prepend(' <a class="eventdata-action-edit" title="'+This.text_action_edit+'" href="'+This.url_edit+uri+'">[v]</a>');a_remove=$('<a class="eventdata-action-remove" title="'+This.text_action_remove+'" href="#">[x]</a>');a_remove.get(0).caller=This;a_remove.get(0).new_id=field;a_remove.click(function(){this.caller.removeEventdata(this.new_id);return false;});li.prepend(a_remove);This.new_list.append(li);This.new_title.show();});});}},addEventdataDialog:function(){var This=this;var S=$('<input type="button" title="'+This.text_action_add+'" value="ok" />');S.click(function(){var vs=This.dialog_start.val();var ve=This.dialog_end.val();var vl=This.dialog_location.val();This.addEventdata(vs,ve,vl);return false;});this.target_start.append($('<p></p>').append(this.dialog_start).append(' '));this.target_end.append($('<p></p>').append(this.dialog_end).append(' '));this.target_location.append($('<p></p>').append(this.dialog_location).append(' ').append(S));this.addEventdataDatepickers();},addEventdata:function(str_start,str_end,str_location){var test_str_start=str_start.replace(/^\d\d\d\d-\d\d-\d\d\s\d\d:\d\d$/,'');var test_str_end=str_end.replace(/^\d\d\d\d-\d\d-\d\d\s\d\d:\d\d$/,'');var testb_str_start=str_start.replace(/[-:\s]/g,"");var testb_str_end=str_end.replace(/[-:\s]/g,"");if(test_str_start==''&&test_str_end==''&&testb_str_start<testb_str_end){str=str_start+'||'+str_end+'||'+str_location;if(this.post_id==false){str=this.splitEventdataFields(this.event_field.val()+'[f]'+str);this.event_field.val(str);this.dialog_start.val('');this.dialog_end.val('');this.dialog_location.val('');this.new_list.toggle();this.displayEventdataList();}else{var params={xd_check:dotclear.nonce,f:'setEventdata',postId:this.post_id,eventdataType:this.type,eventdataStart:str_start,eventdataEnd:str_end,eventdataLocation:str_location};var This=this;$.post(this.service_uri,params,function(data){if($(data).find('rsp').attr('status')=='ok'){This.dialog_start.val('');This.dialog_end.val('');This.dialog_location.val('');This.new_list.toggle();This.displayEventdataList();}else{alert($(data).find('message').text());}});}}},removeEventdata:function(event_id){if(this.post_id==false){var field=this.splitEventdataFields(this.event_field.val(),'[f]');for(var i=0;i<field.length;i++){if(field[i]==event_id){field.splice(i,1);break;}} 
     7this.event_field.val(field.join('[f]'));this.displayEventdataList();}else{var text_confirm_msg=this.text_confirm_remove.replace(/%s/,this.type);if(window.confirm(text_confirm_msg)){var This=this;var field=This.splitEventdataFields(event_id,'||');if(field[0]==''){var params={xd_check:dotclear.nonce,f:'delEventdata',postId:this.post_id,eventdataStart:field[1],eventdataEnd:field[2],eventdataType:this.type};}else{var params={xd_check:dotclear.nonce,f:'delEventdata',postId:this.post_id,eventdataStart:field[0],eventdataEnd:field[1],eventdataLocation:field[2],eventdataType:this.type};} 
     8$.post(this.service_uri,params,function(data){if($(data).find('rsp').attr('status')=='ok'){This.displayEventdataList();}else{alert($(data).find('message').text());}});}}},splitEventdataFields:function(str,splitter){function inArray(needle,stack){for(var i=0;i<stack.length;i++){if(stack[i]==needle){return true;}} 
     9return false;} 
     10var res=new Array();var v=str.split(splitter);v.sort();for(var i=0;i<v.length;i++){v[i]=v[i].replace(/^\s*/,'').replace(/\s*$/,'');res.push(v[i]);} 
     11res.sort();return res;},addEventdataDatepickers:function(){var start_dtPick=new datePickerB(this.dialog_start.get(0));start_dtPick.img_top='0.5em';start_dtPick.draw();var end_dtPick=new datePickerC(this.dialog_end.get(0));end_dtPick.img_top='0.5em';end_dtPick.draw();}}; 
  • plugins/eventdata/locales/fr/main.lang.php

    r1017 r1025  
    11<?php 
    2 // Français translation of eventdata, a plugin for dotclear 
    3 // This file is generated by LangOmatic, a plugin for Dotclear 
    4 $GLOBALS['__l10n']['Events']='Evénements'; 
    5 $GLOBALS['__l10n']['manage events']='Gérer les événements'; 
    6 $GLOBALS['__l10n']['Linked events:']='Evénements liés :'; 
    7 $GLOBALS['__l10n']['Check to delete']='Cocher pour supprimer'; 
    8 $GLOBALS['__l10n']['Begin:']='Début :'; 
    9 $GLOBALS['__l10n']['End:']='Fin :'; 
    10 $GLOBALS['__l10n']['Location:']='Lieu :'; 
     2 
     3$GLOBALS['__l10n']['Events']='Événements'; 
     4$GLOBALS['__l10n']['manage events']='gérer les événements'; 
     5$GLOBALS['__l10n']['Are you sure you want to remove this event?']='Êtes vous sure de vouloir effacer cet événement'; 
     6$GLOBALS['__l10n']['Edit this event']='Éditer cet événement'; 
     7$GLOBALS['__l10n']['Delete this event']='Effacer cet événement'; 
     8$GLOBALS['__l10n']['Add this event']='Ajouter cet événement'; 
     9$GLOBALS['__l10n']['Linked events']='Événements liés'; 
    1110$GLOBALS['__l10n']['Add event']='Ajouter un événement'; 
    1211$GLOBALS['__l10n']['Event start:']='Début d\'événement :'; 
    1312$GLOBALS['__l10n']['Event end:']='Fin d\'événement :'; 
    1413$GLOBALS['__l10n']['Event location:']='Lieu de l\'événement :'; 
     14$GLOBALS['__l10n']['Linked events:']='Événements liés :'; 
     15$GLOBALS['__l10n']['Check to delete']='Cocher pour supprimer'; 
    1516$GLOBALS['__l10n']['add event']='ajouter un événement'; 
    1617$GLOBALS['__l10n']['remove events']='supprimer les événements'; 
    17 $GLOBALS['__l10n']['Event']='Evénement'; 
     18$GLOBALS['__l10n']['Event']='Événement'; 
    1819$GLOBALS['__l10n']['Dates of events']='Dates d\'événements'; 
    19 $GLOBALS['__l10n']['all']='tous'; 
    2020$GLOBALS['__l10n']['ongoing']='en cours'; 
    2121$GLOBALS['__l10n']['outgoing']='pas en cours'; 
     
    4040$GLOBALS['__l10n']['Text format of items:']='Format du texte des billets :'; 
    4141$GLOBALS['__l10n']['Mouseover format of items:']='Format de texte de surbrillance des billets :'; 
    42 $GLOBALS['__l10n']['Post Events']='Evénements d\'un billet'; 
    43 $GLOBALS['__l10n']['Linked events']='Evénements liés'; 
     42$GLOBALS['__l10n']['Post Events']='Événements d\'un billet'; 
    4443$GLOBALS['__l10n']['%s days']='%s jours'; 
    4544$GLOBALS['__l10n']['one day']='une journée'; 
     
    8685$GLOBALS['__l10n']['Alternate template:']='Modèle alternatif :'; 
    8786$GLOBALS['__l10n']['Public URL:']='Lien publique :'; 
    88 $GLOBALS['__l10n']['URL prefix:']='Prefixe du lien :'; 
     87$GLOBALS['__l10n']['URL prefix:']='Préfixe du lien :'; 
    8988$GLOBALS['__l10n']['Choose predefined page template in case where theme of blog does not have it']='Choisissez un modèle prédéfini au cas où le thème du blog n\'en aurait pas'; 
    9089$GLOBALS['__l10n']['Disable list of dates of event on an entry']='Désactiver la liste des dates d\'événements d\'un billet'; 
    91 $GLOBALS['__l10n']['Save configuration']='Enregistrer la configuration'; 
    9290$GLOBALS['__l10n']['Plugin admistration options on this blog']='Administration de l\'extension sur ce blog'; 
    9391$GLOBALS['__l10n']['Enable plugin']='Activer l\'extension'; 
     
    109107$GLOBALS['__l10n']['Support:']='Support :'; 
    110108$GLOBALS['__l10n']['Copyrights:']='Droits :'; 
    111 $GLOBALS['__l10n']['Dates of event']='Dates d\'événement'; 
    112109?> 
  • plugins/eventdata/locales/fr/main.po

    r1017 r1025  
    1 # Français translation of eventdata, a plugin for dotclear 
    2 # This file is generated by LangOmatic, a plugin for Dotclear 
    31 
    42msgid "" 
     
    64 
    75msgid "Events" 
    8 msgstr "Evénements" 
     6msgstr "Événements" 
    97 
    108msgid "manage events" 
    11 msgstr "Gérer les événements" 
     9msgstr "gérer les événements" 
     10 
     11msgid "Are you sure you want to remove this event?" 
     12msgstr "Êtes vous sure de vouloir effacer cet événement" 
     13 
     14msgid "Edit this event" 
     15msgstr "Éditer cet événement" 
     16 
     17msgid "Delete this event" 
     18msgstr "Effacer cet événement" 
     19 
     20msgid "Add this event" 
     21msgstr "Ajouter cet événement" 
     22 
     23msgid "Linked events" 
     24msgstr "Événements liés" 
     25 
     26msgid "Add event" 
     27msgstr "Ajouter un événement" 
     28 
     29msgid "Event start:" 
     30msgstr "Début d'événement :" 
     31 
     32msgid "Event end:" 
     33msgstr "Fin d'événement :" 
     34 
     35msgid "Event location:" 
     36msgstr "Lieu de l'événement :" 
    1237 
    1338msgid "Linked events:" 
    14 msgstr "Evénements liés :" 
     39msgstr "Événements liés :" 
    1540 
    1641msgid "Check to delete" 
    1742msgstr "Cocher pour supprimer" 
    1843 
    19 msgid "Begin:" 
    20 msgstr "Début :" 
    21  
    22 msgid "End:" 
    23 msgstr "Fin :" 
    24  
    25 msgid "Location:" 
    26 msgstr "Lieu :" 
    27  
    28 msgid "Add event" 
    29 msgstr "Ajouter un événement" 
    30  
    31 msgid "Event start:" 
    32 msgstr "Début d'événement :" 
    33  
    34 msgid "Event end:" 
    35 msgstr "Fin d'événement :" 
    36  
    37 msgid "Event location:" 
    38 msgstr "Lieu de l'événement :" 
    39  
    4044msgid "add event" 
    4145msgstr "ajouter un événement" 
     
    4549 
    4650msgid "Event" 
    47 msgstr "Evénement" 
     51msgstr "Événement" 
    4852 
    4953msgid "Dates of events" 
    5054msgstr "Dates d'événements" 
    5155 
    52 msgid "all" 
    53 msgstr "tous" 
    54  
    5556msgid "ongoing" 
    5657msgstr "en cours" 
     
    120121 
    121122msgid "Post Events" 
    122 msgstr "Evénements d'un billet" 
    123  
    124 msgid "Linked events" 
    125 msgstr "Evénements liés" 
     123msgstr "Événements d'un billet" 
    126124 
    127125msgid "%s days" 
     
    242240msgstr "Existence du modèle adapté :" 
    243241 
    244 #: index.php:558 
    245242msgid "Yes" 
    246243msgstr "Oui" 
     
    259256 
    260257msgid "URL prefix:" 
    261 msgstr "Prefixe du lien :" 
     258msgstr "Préfixe du lien :" 
    262259 
    263260msgid "Choose predefined page template in case where theme of blog does not have it" 
     
    267264msgstr "Désactiver la liste des dates d'événements d'un billet" 
    268265 
    269 msgid "Save configuration" 
    270 msgstr "Enregistrer la configuration" 
    271  
    272266msgid "Plugin admistration options on this blog" 
    273267msgstr "Administration de l'extension sur ce blog" 
     
    326320msgid "Copyrights:" 
    327321msgstr "Droits :" 
    328  
    329 msgid "Dates of event" 
    330 msgstr "Dates d'événement" 
  • plugins/eventdata/style.css

    r1005 r1025  
    1 /* 
    2 # -- BEGIN LICENSE BLOCK ---------------------------------- 
    3 # This file is part of eventdata, a plugin for Dotclear 2. 
    4 # 
    5 # Copyright (c) 2009 JC Denis and contributors 
    6 # jcdenis@gdwd.com 
    7 # 
    8 # Licensed under the GPL version 2.0 license. 
    9 # A copy of this license is available in LICENSE file or at 
    10 # http://www.gnu.org/licenses/old-licenses/gpl-2.0.html 
    11 # -- END LICENSE BLOCK ------------------------------------ 
    12 */ 
    13 .eventdatas-list { 
    14      background : #f9f9f9; 
    15      border-width : 1px; 
    16      border-style : solid; 
    17      border-color : #000 #ccc #ccc #000; 
    18     clear:right; 
    19      margin-bottom: 5px; 
    20      padding: 1px; 
    21 } 
    22 .eventdatas-list .green { 
    23      color: Green; 
    24 } 
    25 .eventdatas-list .red { 
    26      color: Red; 
    27 } 
    28 .eventdatas-list .action { 
    29   float:right; 
    30   margin: 1px; 
    31 } 
     1.eventdatas-list{background:#f9f9f9;border-width:1px;border-style:solid;border-color:#000 #ccc #ccc #000;clear:right;margin-bottom:5px;padding:1px}.eventdata-waiting{color:#999;font-style:italic}a.eventdata-action-remove,span.eventdata-action-remove{float:right;margin-right:1px;color:#999 !important;border:none}a.eventdata-action-edit{float:right;margin-right:4px;color:#999 !important;border:none}a.eventdata-action-remove:hover,a.eventdata-action-remove:focus,a.eventdata-action-edit:hover,a.eventdata-action-edit:focus{color:#06c !important} 
Note: See TracChangeset for help on using the changeset viewer.

Sites map