Tabla de contenidos
    No hay encabezados
    /***
        USAGE:
    
        TaskList3()
    
            NOTES:
                * only 1 TaskList can be embedded per page
                * this template requires the DekiAPI script extension
                * this template requires the jQuery script extension
    ***/
    
     // + PARAMETERS
    var par = { 
        srcpath: ($0 ?? args.srcpath ..'/*'),
        showcomplete: String.tolower(String.trim($1 ?? args.showcomplete ?? 'true')),
        ownerstype: String.tolower(String.trim($2 ?? args.ownerstype ?? 'im_user')), /* all, im_user, im_user_or_manager, im_manager */
        ajax_action: String.tolower( __request.args.ajax_action ?? args.ajax_action ?? 'load')
       };
    if ((par.ajax_action=='load') || (par.ajax_action=='reload_tasklist3')) {


    var
    ownerstypes = { all: "Todas", im_user: "Yo usuario", im_user_or_manager: "Yo usuario o responsable", im_manager: "Yo responsable" }; var next_ownerstype='all';
    if (par.
    ownerstype =='all') { let next_ownerstype = 'im_user'; }
    if (
    par.ownerstype =='im_user') { let next_ownerstype='im_user_or_manager'; }
    if (
    par.ownerstype =='im_user_or_manager') { let next_ownerstype='im_manager'; }
    if (
    par.ownerstype =='im_manager') { let next_ownerstype='all'; }
    // + CONSTANTS var N_COLS='9'; var PG_STYLE= "background-color: green; width: [pgtext]; text-align: center; color: black;"; var CTOR_TASK_EDIT = "when(@message.name == 'edit_view') $('#[edit_col]').hide(); when(@message.name == 'default_view') $('#[edit_col]').show();"; var CTOR_TASK_NO_EDIT = "when(@message.name == 'edit_view') $('#[edit_col]').show(); when(@message.name == 'default_view') $('#[edit_col]').hide();"; // + VARS var today; if (Date.IsValid(Date.Now)) let today = Date.Format(Date.changetimezone(Date.now, user.timezone), "dd/MM/yyyy"); else let today = Date.Format('01/08/2009', 'dd/MM/yyyy'); var TTG = ''; var API = ''; var search_criteria = ''; var tasks = []; var assigned_task_pages; var taskspage; var pgtext_style; var pctor; var show; var i; var script; var pg; var ctask; var pages; var class = ""; var title; var any = 0; var current_page = 0; var actual_task_container = 0; var skip = 0; <div id='dipatcher' style='display: none'> // TaskList3Dispatcher{ index: __request.args.index, page_api: __request.args.page_api }; var task_api = __request.args.page_api ?? args.page_api ?? ''; var task_index = __request.args.index ?? args.index ?? ''; if ((task_index!='') && (task_api!='')) { let search_criteria = 'task_'..task_api..'_'..task_index; let pages = Wiki.GetSearch(search_criteria); if (#pages==0) {      let pg = wiki.GetPage(Num.Int(task_api));      let tasks = json.parse(pg.properties["tasks"].text ?? "") ?? [];      let ctask = tasks[task_index];      let script = 'location.href = "'..Site.Uri..'index.php?title='..pg.Path..'/'..Uri.Encode(ctask.title)..'&action=edit&template=TaskList3Details&index='..task_index..'&page_api='..task_api..'";';      } else { if (#pages==1) {           let script = 'location.href = "'..pages[0].uri..'";';          } else         {  let script = 'location.href = "'..Site.Uri..'/Special:Search?search='..search_criteria..'&type=fulltext";'; } } <span id='dispatcher_script' script=(script) style='display: none'></span>     let skip = 1; } </div> if (!skip) { <div id="deki-tasklist">     // + INPUT FORM     if (par.ajax_action=='load') { TaskList3Form{ default_date: today, on_reload_func_name: "ToDoWireControls", task_form_id: "tl", parent_args: json.emit(par) }; }     // + VARS     let search_criteria = ''; let actual_task_container = Map.Contains(page.tags,'TaskContainer');     if (par.srcpath == '/*')       { let search_criteria = 'type: wiki AND tag: "TaskContainer"';        if (!actual_task_container) {          let assigned_task_pages ..= [wiki.getpage(page.path)];         }       }      else       {         let taskspage = args.srcpath;         let search_criteria = 'type: wiki AND tag: "TaskContainer" AND             path: ' ..string.replace(par.srcpath, 'User:','User\\:')..' AND NOT (path:             ' ..string.replace(taskspage, 'User:','User\\:')..')';         if (wiki.pageexists(taskspage)) {  let assigned_task_pages ..= [wiki.getpage(taskspage)]; }        if ((!actual_task_container) && (taskspage!=page.path)) {          let assigned_task_pages ..= [wiki.getpage(page.path)];         }       } let assigned_task_pages ..= wiki.getsearch(search_criteria, 1000, 'title');    let tasks = []; <div class='filesheader'>   <div class='filesformlink'><span class='text'>    web.link(uri.build(page.uri, _,{ownerstype: next_ownerstype, showcomplete: par.showcomplete }),"Usuario Tarea: " .. ownerstypes[par.ownerstype] .. " ");      web.html(' | ');      web.link(uri.build(page.uri, _,{ownerstype: par.ownerstype, showcomplete: (par.showcomplete=='true'?'false':'true') }),"Visualizando tareas completadas: " .. (par.showcomplete=='true'?"SI":"NO") .. " "); </span></div> </div>     <table id="tltasklist" width="100%" class="table" cellspacing="0" cellpadding="0" border="0">         <colgroup>             <col />             <col />             <col width="50%" />             <col />             <col />             <col />             <col />             <col />             <col />         </colgroup>     <tr>      <th>"Responsables"</th>      <th>"Usuarios"</th>      <th>"Tarea"</th>      <th>"Fecha Inicio"</th>      <th>"Fecha Fin"</th>      <th>"P"</th>      <th>"Progreso"</th>      <th>"E"</th>             <th>String.nbsp</th>     </tr> foreach(var t in assigned_task_pages) {         let i = __count;         let tasks = json.parse(t.properties["tasks"].text ?? "") ?? [];         let tasks = [ item .. { index: __index } foreach var item in tasks ];    let invaliddates = [ item foreach var item in tasks where !date.isvalid(item.enddate) ];         /* * * FALTA LA MISMA COMPROVACION PARA STARTDATE * * * */        let tasks = [ item foreach var item in tasks where date.isvalid(item.enddate) ]; //       let tasks = list.sort(tasks, _, _, "date.compare($left.enddate, $right.enddate)") .. invaliddates; let tasks = list.orderby(tasks,["enddate descending","priority descending","title"]) .. invaliddates;         let any = 0;         let current_page = (t.path==page.path);         if ((current_page) && (!any)) {           <tr><td style='background-color: lightgray' colspan=(N_COLS)>             <B>"PÁGINA ACTUAL"</B>           </td></tr>          let any = 1;          }     foreach(var entry in tasks) {             let show = 'true';      let class = "";             if(entry.status=="D") {                 let show = 'false';                         } else             {          if(entry.status=="T") {                     let class..= "completed ";                     let show = par.showcomplete;                    }                 else if(date.isvalid(entry.enddate)&&date.isvalid(today)) {                    if (entry.progress!='100%') {                if(date.issameday(today, entry.enddate)) let class ..= "due-today ";               else if (date.isafter(today, entry.enddate)) let class ..= "due-past ";                     }                 }                }             if ((par.ownerstype != 'all') && (show == 'true' )) {              let show = 'false';              if (string.contains(string.tolower(entry.username),string.tolower(user.name)) && ( (par.ownerstype=="im_user") || (par.ownerstype == "im_user_or_manager")) )              { let show = 'true'; }              if (string.contains(string.tolower(entry.manager),string.tolower(user.name)) && ( (par.ownerstype=="im_manager") || (par.ownerstype == "im_user_or_manager")) )              { let show = 'true'; }              }             if (show=='true') {                 if (!any) {                     <tr><td style='background-color: lightgray' colspan=(N_COLS)>                       <B>web.link(t.uri,t.path);</B>                     </td></tr>                     let any = 1;                 }           let title = "Creada por " .. entry.author;                 if (entry.progress== '') { let pgtext_style = String.Replace(PG_STYLE,"[pgtext]","0%"); }                      else { let pgtext_style = String.Replace(PG_STYLE,"[pgtext]",entry.progress); }          <tr id=("task_row_"..i.."_"..__count) class=(class) title=(title)>          <td><span>String.Replace(entry.manager,'_',' ')</span></td>          <td><span>String.Replace(entry.username,'_',' ')</span></td>          <td><span>entry.title</span>String.nbsp;String.nbsp;<a href='#' class='texpand' rel=(entry.index) page_api=(t.id)>"[...]"</a></td>          <td align="CENTER"><span>entry.startdate</span></td>          <td align="CENTER"><span>entry.enddate</span></td>          <td align="CENTER"><span>entry.priority</span></td>          <td align="CENTER"><div id="showbar" style="font-size:8pt;padding:2px;border:solid black 1px; width: 60px; text-align: left;">                                     <div id="progress1" style=(pgtext_style)>(entry.progress)</div>                                  </div>                     </td>          <td align="CENTER"><span>entry.status</span></td>                     let pctor = String.Replace(CTOR_TASK_EDIT,'[edit_col]',"edit_col_"..i.."_"..__count);           <td class="task-edit" id=("edit_col_"..i.."_"..__count) ctor=(pctor) align="CENTER" >                         <a href="#" class='tedit' rel=(entry.index) row_index=("task_row_"..i.."_"..__count) page=(t.api) >String.nbsp</a>     </td>          </tr> }     }      if ((any) || (current_page)) {     <tr id=("add_row_"..__count)>     <td colspan=(N_COLS) style='height: 30px'>                  let pctor = String.Replace(CTOR_TASK_EDIT,'[edit_col]','add_button'..__count);                  <a href="#" class='tedit' id=('add_button'..__count) rel='add_row' row_index=('add_row_'..__count) page=(t.api) ctor=(pctor)>"+ Añadir Tarea..."</a>                  let pctor = String.Replace(CTOR_TASK_NO_EDIT,'[edit_col]','msg_adding'..__count);              <div id=('msg_adding'..__count) style='display: none' ctor=(pctor)><B>"Introduce los datos de la nueva tarea:"</B></div>      </td>      </tr>         } }     </table> </div> if (par.ajax_action=='load') { if (!actual_task_container) { <div style='background-color: rgb(201,255,211);'> "Recuerda que si quieres que estas tareas sean gestionables globalmente, tienes que añadir la etiqueta: TaskContainer. Una vez añadida la etiqueta puede pasar un tiempo hasta que no aparecen las tareas." </div> } // global script code <script type="text/jem">" function ToDoWireControls() {     Deki.$('#tltasklist a.tedit').bind('click', function() {         tlEditTask({ index: Deki.$(this).attr('rel'), row_index: Deki.$(this).attr('row_index'), page: Deki.$(this).attr('page') }, function() {@message({ name: 'default_view' })});         @message({ name: 'edit_view' });         return false;     });     Deki.$('#tltasklist a.texpand').bind('click', function() {         MindTouch.Deki.Reload(#dipatcher, { page_api: Deki.$(this).attr('page_api'), index: Deki.$(this).attr('rel') }, function() { eval(Deki.$('#dispatcher_script').attr('script')); });         return false;     }); } ToDoWireControls(); "</script> // styles <html>     <head>         <style type="text/css">" //--- Start TASKLIST styles --- #deki-tasklist { margin: 0; padding: 4px; width: 98%; } #deki-tasklist table { width: 100%; margin: 0; } #deki-tasklist table td { border-bottom: 1px solid #000; padding: 4px 2px; } #deki-tasklist tr td.task-edit { text-align: right; padding-right: 8px; } #deki-tasklist tr.due-today td { background-color: #ff0; } #deki-tasklist tr.completed td { background-color: #fff; } #deki-tasklist tr.completed td span { text-decoration: line-through; } #deki-tasklist tr.due-past td, #deki-tasklist tr.due-past td.task-edit a { color: #f00; } #deki-tasklist table th { font-size: 12px; font-weight: bold; text-align: left; border-bottom: 2px solid #000; } #deki-tasklist div.task-submit { float: right; padding-right: 0px; } #deki-tasklist div.task-submit input { margin-right: 4px; } #deki-tasklist table tr td.task-edit a { background: url(/skins/common/icons/silk/page_white_edit.png) no-repeat center left; color: #000; text-decoration: none; padding: 3px 3px 3px 21px; font-size: 11px; } TABLE.submitform td.label {     border-bottom : #aaa 1px solid;     text-aligin : right;     padding-bottom : 6px;     padding-left : 8px;     padding-right: 8px;     font-family: Verdana, Arial, Helvetica, sans-serif;     white-space : nowrap;     background : url(bg-tbl-header.gif) #d9d9d9 no-repeat;     color : #4f6b72;     font-size : 12px;     border-top : #aaa 1px solid;     font-weight: bold;     border-right: #aaa 1px solid;     padding-top: 6px; } //--- End TASKLIST styles --- "         </style>     </head> </html> } } }
    Etiquetas (Edit tags)
    • No tags
    Debe inicie sesión para enviar un comentario.