Table of contents
No headers
/** Author: Blake Harms Version: 2.7 See http://developer.mindtouch.com/DekiScript/FAQ/How_do_I..._Build_an_Integrated_Bug_and_Issue_Tracker for a changelog. */ dekiapi(); jquery.ui("smoothness"); // Gather options from parent (form) var options = String.eval(page.parent.properties.options.text); var params = string.deserialize(options.params); <html><head> <script type="text/javascript" src="http://developer.mindtouch.com/@api/deki/files/4634/=jquery.autocomplete.pack.js"></script> <link rel="stylesheet" type="text/css" href="http://developer.mindtouch.com/@api/deki/files/4635/=jquery.autocomplete.css" /> <script type="text/javascript">" Deki.$(document).ready(function() { //when the document is ready... Deki.$('.datepicker').datepicker(); Deki.$('.resizable').resizable(); Deki.$('#ticketProperties').find('input, select,textarea').change(function(){ $self = Deki.$(this); var prop = 'urn:custom.mindtouch.com#' + $self.attr('name'); // url that retrieves the page properties Deki.Api.ReadPageProperty(null, prop, function(result) { if(result.etag) { // page property exists, write over it. Deki.Api.UpdatePageProperty(result.href, $self.val(), result.etag, function() { reportSuccess($self); }, function(result) { alert('An error occurred trying to update the store (status: ' + result.status + ' - ' + result.text + ')'); }); } else { // page property doesn't exist, create one. Deki.Api.CreatePageProperty(null, prop, $self.val(), function() { reportSuccess($self); }, function(result) { alert('An error occurred trying to create the store (status: ' + result.status + ' - ' + result.text + ')'); }); } }, function(result) { alert('An error occurred trying to read the store (status: ' + result.status + ' - ' + result.text + ')'); }); }); }); "</script> <script type="text/javascript">" var reportSuccess = function($self) { $self.addClass('value_updated'); setTimeout('$self.removeClass(\\'value_updated\\')',1000); } "</script> <style type="text/css">" #ticketProperties table { border-spacing:0;border-collapse:collapse; } td.label { background-color:#F0F0F0; font-weight:bold; width:150px; } .value_updated { background-color:#FFFFA7 !important; } "</style> </head></html> <div id="top-nav-bar"> <a href=(page.parent.uri) class='to-table'> "Back to form" </a> </div> <div id="ticketProperties"> <table cellspacing="0" cellpadding="3" border="1" width="70%" style="table-layout: fixed;"> <tbody> foreach(var param in params){ var type = param.value.type; if(! type){ if(param.value.data is list || param.value is map) let type = 'select'; if(!param.value.data || param.value.data is str) let type = 'text'; } if(param.value.show == 'table' || param.key=='title') continue; // skip if not supposed to be seen here. <tr> <td class="label"> param .value.label ?? String.toCamelCase(param .key) </td> <td> var property = Map.values(map.select(page.properties, "$.key=='"..String.replace(String.toLower(param .key)," ","_").."'"))[0]; if(param.value.editable !== false){ switch(type){ case 'suggest': if(param.value.data is list){ <input type="text" name=(String.toLower(String.replace(param.key,' ','_'))) style=(param.value.style.form) value=(param.value.data) ctor=( "$this.autocomplete("..JSON.emit(param.value.data)..");") /> } break; case 'text': <input type="text" name=(String.toLower(String.replace(param.key,' ','_'))) style=(param.value.style.ticket) value=(property.text) /> break; case 'textarea': var resizable = (typeof param.value.resizable == typeof null || param.value.resizable) ? 'resizable' : ''; <textarea class=(resizable) name=(String.toLower(String.replace(param.key,' ','_'))) style=(param.value.style.ticket)>property.text</textarea> break; case 'datepicker': <input type="text" class="datepicker" name=(String.toLower(String.replace(param.key,' ','_'))) style=(param.value.style.ticket) value=(property.text) /> break; case 'hidden': property.text; break; case 'title': <input type="text" class="title" name=(String.toLower(String.replace(param.key,' ','_'))) style=(param.value.style.ticket) value=(param.value.data) /> break; case 'status': // follow through. case 'select': if((param.value.data is map) || (param.value.data is list)){ <select name=(String.toLower(String.replace(param.key,' ','_'))) style=(param.value.style.ticket)> <option value=(property.text)>property.text</option> <option value=""> ""</option> foreach(var option in param.value.data){ <option value=(option)> option </option> } </select> } else{ <span style=(param.value.style.ticket)>param.value.data</span> } break; default: // ignore. break; } } else { <span style=(param.value.style.ticket)>property.text</span> } </td> </tr> } </tbody> </table> </div>
Comments