Changeset 1025
- Timestamp:
- 04/14/09 21:37:55 (14 years ago)
- 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 21 eventdata 0.5.0 (2009/04/14) plugin for Dotclear 2 2 2 3 3 Préambule: … … 322 322 ainsi que de lieu d'événement sont ajoutés. 323 323 Il 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. 324 Une listes des évènemets dèjà liés à un billet peut être présente. 325 Si le language javascript est actif, il est possible de supprimer ou d'ajouter des événements sans enregistrer le billet, 326 sinon il faut enregistrer le billet pour que les changements sur les événements soit pris en compte. 327 Un lien vers l'édition d'un événement et également présent pour chaque événement associé au billet. 325 328 326 329 X.2 Billets (posts.php): … … 333 336 ---------------------------------------------- 334 337 335 Permet les actions par paquet. (Ajout d'événement sur plusieurs billets.)338 Permet les actions par paquet. (Ajout/suppression d'événement sur plusieurs billets.) 336 339 337 340 X.4 Extension Evénements (plugin.php): -
plugins/eventdata/_admin.php
r1017 r1025 40 40 $core->addBehavior('adminPostFormSidebar',array('eventdataAdminBehaviors','adminPostFormSidebar')); 41 41 $core->addBehavior('adminAfterPostUpdate',array('eventdataAdminBehaviors','adminAfterPostSave')); 42 $core->addBehavior('adminAfterBeforeCreate',array('eventdataAdminBehaviors','adminAfterBeforeCreate')); 43 $core->addBehavior('adminAfterPostCreate',array('eventdataAdminBehaviors','adminAfterPostCreate')); 42 44 $core->addBehavior('adminAfterPostCreate',array('eventdataAdminBehaviors','adminAfterPostSave')); 43 45 $core->addBehavior('adminBeforePostDelete',array('eventdataAdminBehaviors','adminBeforePostDelete')); … … 47 49 48 50 # 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')); 52 54 53 55 # Import/export … … 64 66 { 65 67 # 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'). 71 87 '<script type="text/javascript">'."\n". 72 88 "//<![CDATA[\n". … … 100 116 public static function adminPostFormSidebar(&$post) 101 117 { 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 102 136 $post_id = $post ? (integer) $post->post_id : -1; 103 # Know events104 137 $eventdata = new dcEventdata($GLOBALS['core']); 105 138 $eventdatas = $eventdata->getEventdata('eventdata',null,null,null,$post_id); … … 112 145 echo 113 146 '<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) : ''). 120 156 '</div>'; 121 157 $i++; … … 123 159 echo '</div>'; 124 160 } 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 } 140 205 } 141 206 # Save or update for post.php … … 162 227 $location = isset($_POST['eventdata_location']) ? $_POST['eventdata_location'] : ''; 163 228 229 $eventdata->delEventdata('eventdata',$post_id,$start,$end,$location); 164 230 $eventdata->setEventdata('eventdata',$post_id,$start,$end,$location); 165 231 } … … 177 243 # Delete for post.php 178 244 public static function adminBeforePostDelete(&$post_id) 179 { 245 {echo 'la';exit(1); 180 246 $post_id = (integer) $post_id; 181 247 $eventdata = new dcEventdata($GLOBALS['core']); … … 214 280 215 281 while ($posts->fetch()) { 282 $eventdata->delEventdata('eventdata',$posts->post_id,$start,$end,$location); 216 283 $eventdata->setEventdata('eventdata',$posts->post_id,$start,$end,$location); 217 284 } … … 244 311 245 312 echo 246 self::adminPostHeaders( ).313 self::adminPostHeaders(false). 247 314 '<link rel="stylesheet" type="text/css" href="style/date-picker.css" />'."\n". 248 315 '<div id="edit-eventdata">'. 249 316 '<h3>'.__('Add event').'</h3>'. 250 '<div class="p">'.251 317 '<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>'. 262 326 $hidden_fields. 263 327 $core->formNonce(). 264 328 form::hidden(array('action'),'eventdata_add'). 265 '<input type="submit" value="'.__(' save').'" /></p>'.329 '<input type="submit" value="'.__('Save').'" /></p>'. 266 330 '</form>'. 267 331 '</div>'; -
plugins/eventdata/_define.php
r1017 r1025 17 17 /* Description*/ "Add period to your posts", 18 18 /* Author */ "JC Denis", 19 /* Version */ '0. 4.1',19 /* Version */ '0.5.0', 20 20 /* Permissions */ 'usage,contentadmin' 21 21 ); 22 /* date */ #2009041 322 /* date */ #20090414 23 23 ?> -
plugins/eventdata/inc/class.dc.eventdata.php
r1017 r1025 24 24 } 25 25 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 26 43 public function getEventdata($type=null,$limit=null,$eventdata_start=null,$eventdata_end=null,$post_id=null,$period=null,$sort='desc') 27 44 { 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 '. 29 46 'FROM '.$this->table.' EV LEFT JOIN '.$this->core->prefix.'post P '. 30 47 'ON EV.post_id = P.post_id '. -
plugins/eventdata/inc/class.dc.eventdata.rest.php
r1017 r1025 26 26 27 27 $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); 29 29 30 30 $sortby = explode(',',$sortby); … … 54 54 $xe->end = $rs->eventdata_end; 55 55 $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); 56 63 $rsp->insertNode($xe); 57 64 } -
plugins/eventdata/inc/lib.eventdata.list.php
r1017 r1025 145 145 # Title 146 146 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"', 148 148 # Edit 149 149 '<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">'. 156 152 '</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"', 163 155 # Start 164 156 dt::dt2str(__('%Y-%m-%d %H:%M'),$this->rs->eventdata_start) => 'class="nowrap"', -
plugins/eventdata/index.php
r1017 r1025 72 72 $combo_action = array(); 73 73 if ($core->auth->check('delete,contentadmin',$GLOBALS['core']->blog->id)) { 74 $combo_action[__('remove events')] = 'event _remove';74 $combo_action[__('remove events')] = 'eventdata_remove'; 75 75 } 76 76 if ($core->auth->check('publish,contentadmin',$core->blog->id)) { 77 $combo_action[__('add event')] = 'eventdata_add'; 77 78 $combo_action[__('publish')] = 'publish'; 78 79 $combo_action[__('unpublish')] = 'unpublish'; … … 180 181 181 182 if (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'; 191 190 unset($get_eventdata); 192 191 } … … 329 328 '<div class="multi-part" id="pst" title="'.$tab['pst'].'">'. 330 329 '<p><a href="'.$E->url.'&t=pst">'.__('Back to list of all events').'</a></p>'. 331 eventdataAdminBehaviors::adminPostHeaders( ).330 eventdataAdminBehaviors::adminPostHeaders(false). 332 331 '<link rel="stylesheet" type="text/css" href="style/date-picker.css" />'."\n". 333 332 '<div id="edit-eventdata">'. … … 335 334 __('Edit this event for this entry') : 336 335 __('Edit this event for all entries')).'</h3>'. 337 '<div class="p">'.338 336 '<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>'. 349 345 form::hidden('p','eventdata'). 350 346 form::hidden('t','pst'). … … 515 511 form::hidden('t','tpl'). 516 512 $core->formNonce().' 517 <input type="submit" name="save[tpl]" value="'.__('Save configuration').'" />513 <input type="submit" name="save[tpl]" value="'.__('Save').'" /> 518 514 </form> 519 515 </div>'; … … 581 577 form::hidden('t','adm'). 582 578 $core->formNonce().' 583 <input type="submit" name="save[adm]" value="'.__('Save configuration').'" /></p>579 <input type="submit" name="save[adm]" value="'.__('Save').'" /></p> 584 580 </form> 585 581 </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 }; 1 function datePickerB(target){if(!document.getElementById){return;} 2 if(!target||target.nodeName.toLowerCase()!='input'){return;} 3 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);} 4 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++;} 5 this.oBody.appendChild(oRow);} 6 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);};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();} 7 while(this.oYear.hasChildNodes()){this.oYear.removeChild(this.oYear.firstChild)} 8 this.oYear.appendChild(document.createTextNode(this.year));while(this.oMonth.hasChildNodes()){this.oMonth.removeChild(this.oMonth.firstChild)} 9 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)} 10 this.oDates[i].appendChild(document.createTextNode('-'));this.oDates[i].className='';this.oDates[i].onclick=function(){return;};} 11 for(i=1;i<=nbDays;i++){var j=firstDay+i-1;while(this.oDates[j].hasChildNodes()){this.oDates[j].removeChild(this.oDates[j].firstChild)} 12 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';}} 13 this.setHour(this.hour);this.setMinute(this.minute);},setHour:function(h){if(h<0){h=23;} 14 if(h>23){h=0;} 15 if(h<10){h='0'+h;} 16 this.hour=h*1;this.oHour.value=h;},setMinute:function(m){if(m<0){m=59;} 17 if(m>59){m=0;} 18 if(m<10){m='0'+m;} 19 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++;} 20 else if(m<1){this.month=12;this.year--;} 21 else{this.month=m;} 22 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;} 23 if(minute<0||minute>59||isNaN(minute)){minute=0;} 24 if(m<10){m='0'+m;} 25 if(d<10){d='0'+d;} 26 if(hour<10){hour='0'+hour;} 27 if(minute<10){minute='0'+minute;} 28 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;} 29 if(d<10){d='0'+d;} 30 if(h<10){h='0'+h;} 31 if(i<10){i='0'+i;} 32 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;}} 33 return res;},firstDay:function(){var dt=new Date(this.year,this.month-1,1);var res=dt.getDay();if(res==0){res=7;} 34 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();} 35 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;} 36 obj=obj.offsetParent;}}else if(obj.x){curleft+=obj.x;} 37 return curleft;},findPosY:function(obj){var curtop=0;if(obj.offsetParent){while(1){curtop+=obj.offsetTop;if(!obj.offsetParent){break;} 38 obj=obj.offsetParent;}}else if(obj.y){curtop+=obj.y;} 39 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);}};function datePickerC(target){if(!document.getElementById){return;} 40 if(!target||target.nodeName.toLowerCase()!='input'){return;} 41 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);} 42 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++;} 43 this.oBody.appendChild(oRow);} 44 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);};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();} 45 while(this.oYear.hasChildNodes()){this.oYear.removeChild(this.oYear.firstChild)} 46 this.oYear.appendChild(document.createTextNode(this.year));while(this.oMonth.hasChildNodes()){this.oMonth.removeChild(this.oMonth.firstChild)} 47 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)} 48 this.oDates[i].appendChild(document.createTextNode('-'));this.oDates[i].className='';this.oDates[i].onclick=function(){return;};} 49 for(i=1;i<=nbDays;i++){var j=firstDay+i-1;while(this.oDates[j].hasChildNodes()){this.oDates[j].removeChild(this.oDates[j].firstChild)} 50 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';}} 51 this.setHour(this.hour);this.setMinute(this.minute);},setHour:function(h){if(h<0){h=23;} 52 if(h>23){h=0;} 53 if(h<10){h='0'+h;} 54 this.hour=h*1;this.oHour.value=h;},setMinute:function(m){if(m<0){m=59;} 55 if(m>59){m=0;} 56 if(m<10){m='0'+m;} 57 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++;} 58 else if(m<1){this.month=12;this.year--;} 59 else{this.month=m;} 60 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;} 61 if(minute<0||minute>59||isNaN(minute)){minute=0;} 62 if(m<10){m='0'+m;} 63 if(d<10){d='0'+d;} 64 if(hour<10){hour='0'+hour;} 65 if(minute<10){minute='0'+minute;} 66 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;} 67 if(d<10){d='0'+d;} 68 if(h<10){h='0'+h;} 69 if(i<10){i='0'+i;} 70 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;}} 71 return res;},firstDay:function(){var dt=new Date(this.year,this.month-1,1);var res=dt.getDay();if(res==0){res=7;} 72 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();} 73 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;} 74 obj=obj.offsetParent;}}else if(obj.x){curleft+=obj.x;} 75 return curleft;},findPosY:function(obj){var curtop=0;if(obj.offsetParent){while(1){curtop+=obj.offsetTop;if(!obj.offsetParent){break;} 76 obj=obj.offsetParent;}}else if(obj.y){curtop+=obj.y;} 77 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);}}; -
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());} 2 var 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);} 3 this.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();} 4 if(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;}} 5 if(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;} 6 This.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;}} 7 this.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;}} 9 return false;} 10 var 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]);} 11 res.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 1 1 <?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'; 11 10 $GLOBALS['__l10n']['Add event']='Ajouter un événement'; 12 11 $GLOBALS['__l10n']['Event start:']='Début d\'événement :'; 13 12 $GLOBALS['__l10n']['Event end:']='Fin d\'événement :'; 14 13 $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'; 15 16 $GLOBALS['__l10n']['add event']='ajouter un événement'; 16 17 $GLOBALS['__l10n']['remove events']='supprimer les événements'; 17 $GLOBALS['__l10n']['Event']=' Evénement';18 $GLOBALS['__l10n']['Event']='Événement'; 18 19 $GLOBALS['__l10n']['Dates of events']='Dates d\'événements'; 19 $GLOBALS['__l10n']['all']='tous';20 20 $GLOBALS['__l10n']['ongoing']='en cours'; 21 21 $GLOBALS['__l10n']['outgoing']='pas en cours'; … … 40 40 $GLOBALS['__l10n']['Text format of items:']='Format du texte des billets :'; 41 41 $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'; 44 43 $GLOBALS['__l10n']['%s days']='%s jours'; 45 44 $GLOBALS['__l10n']['one day']='une journée'; … … 86 85 $GLOBALS['__l10n']['Alternate template:']='Modèle alternatif :'; 87 86 $GLOBALS['__l10n']['Public URL:']='Lien publique :'; 88 $GLOBALS['__l10n']['URL prefix:']='Pr efixe du lien :';87 $GLOBALS['__l10n']['URL prefix:']='Préfixe du lien :'; 89 88 $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'; 90 89 $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';92 90 $GLOBALS['__l10n']['Plugin admistration options on this blog']='Administration de l\'extension sur ce blog'; 93 91 $GLOBALS['__l10n']['Enable plugin']='Activer l\'extension'; … … 109 107 $GLOBALS['__l10n']['Support:']='Support :'; 110 108 $GLOBALS['__l10n']['Copyrights:']='Droits :'; 111 $GLOBALS['__l10n']['Dates of event']='Dates d\'événement';112 109 ?> -
plugins/eventdata/locales/fr/main.po
r1017 r1025 1 # Français translation of eventdata, a plugin for dotclear2 # This file is generated by LangOmatic, a plugin for Dotclear3 1 4 2 msgid "" … … 6 4 7 5 msgid "Events" 8 msgstr " Evénements"6 msgstr "Événements" 9 7 10 8 msgid "manage events" 11 msgstr "Gérer les événements" 9 msgstr "gérer les événements" 10 11 msgid "Are you sure you want to remove this event?" 12 msgstr "Êtes vous sure de vouloir effacer cet événement" 13 14 msgid "Edit this event" 15 msgstr "Éditer cet événement" 16 17 msgid "Delete this event" 18 msgstr "Effacer cet événement" 19 20 msgid "Add this event" 21 msgstr "Ajouter cet événement" 22 23 msgid "Linked events" 24 msgstr "Événements liés" 25 26 msgid "Add event" 27 msgstr "Ajouter un événement" 28 29 msgid "Event start:" 30 msgstr "Début d'événement :" 31 32 msgid "Event end:" 33 msgstr "Fin d'événement :" 34 35 msgid "Event location:" 36 msgstr "Lieu de l'événement :" 12 37 13 38 msgid "Linked events:" 14 msgstr " Evénements liés :"39 msgstr "Événements liés :" 15 40 16 41 msgid "Check to delete" 17 42 msgstr "Cocher pour supprimer" 18 43 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 40 44 msgid "add event" 41 45 msgstr "ajouter un événement" … … 45 49 46 50 msgid "Event" 47 msgstr " Evénement"51 msgstr "Événement" 48 52 49 53 msgid "Dates of events" 50 54 msgstr "Dates d'événements" 51 55 52 msgid "all"53 msgstr "tous"54 55 56 msgid "ongoing" 56 57 msgstr "en cours" … … 120 121 121 122 msgid "Post Events" 122 msgstr "Evénements d'un billet" 123 124 msgid "Linked events" 125 msgstr "Evénements liés" 123 msgstr "Événements d'un billet" 126 124 127 125 msgid "%s days" … … 242 240 msgstr "Existence du modèle adapté :" 243 241 244 #: index.php:558245 242 msgid "Yes" 246 243 msgstr "Oui" … … 259 256 260 257 msgid "URL prefix:" 261 msgstr "Pr efixe du lien :"258 msgstr "Préfixe du lien :" 262 259 263 260 msgid "Choose predefined page template in case where theme of blog does not have it" … … 267 264 msgstr "Désactiver la liste des dates d'événements d'un billet" 268 265 269 msgid "Save configuration"270 msgstr "Enregistrer la configuration"271 272 266 msgid "Plugin admistration options on this blog" 273 267 msgstr "Administration de l'extension sur ce blog" … … 326 320 msgid "Copyrights:" 327 321 msgstr "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.