General Actions:
Log-in
Wiki:
Courses
▼
:
Document Index
»
Space:
Admin
▼
:
Document Index
»
Page:
Export
Search
Page Actions:
Export
▼
:
Export as PDF
Export as RTF
Export as HTML
More actions
▼
:
Print preview
View Source
Export
Wiki source code of
Export
Last modified by
Hal Eden
on 2010/08/19 07:32
Content
·
Comments
(0)
·
Attachments
(0)
·
History
·
Information
Hide line numbers
1: #set($action = $request.action) 2: #if ($action == "getdocs") 3: $response.setContentType("text/xml") 4: #set($space = $request.spacename) 5: <response> 6: #set($docs = $xwiki.searchDocuments("where doc.web='$request.spacename' order by doc.date desc")) 7: #foreach ($docname in $docs) 8: <value>$xwiki.getXMLEncoded("${docname}")</value> 9: #end 10: </response> 11: #elseif ($action == "getPackageList") 12: $response.setContentType("text/xml") 13: #set($alist = $doc.getAttachmentList()) 14: <response> 15: #foreach ($oAttach in $alist) 16: <value>$oAttach.getFilename()</value> 17: #end 18: </response> 19: #elseif ($action == "preexport") 20: #set($ToExport = $request.getParameterValues("toExport")) 21: #set($session = $request.getSession(false)) 22: #set($ok = $session.setAttribute("exportdata", $ToExport)) 23: OK 24: #elseif ($action == "export") 25: #set($session = $request.getSession(false)) 26: #set($ToExport = $session.getAttribute("exportdata")) 27: #set($withHistory = $request.withHistory) 28: #set($author = $request.author) 29: #set($description = $request.description) 30: #set($licence = $request.licence) 31: #set($version = $request.version) 32: #set($packageName = $request.packageName) 33: 34: #set($export = $xwiki.package) 35: 36: #if ($withHistory=="true") 37: $export.setWithVersions(true) 38: #else 39: $export.setWithVersions(false) 40: #end 41: #if ($author) 42: $export.setAuthorName($author) 43: #end 44: #if ($description) 45: $export.setDescription($description) 46: #end 47: 48: #if ($licence) 49: $export.setLicence($licence) 50: #end 51: 52: #if ($version) 53: $export.setVersion($version) 54: #end 55: 56: $export.setName($packageName) 57: #foreach ($itemexp in $ToExport) 58: $export.add($itemexp, 0) 59: #end 60: $export.export() 61: #else 62: {pre} 63: <style type="text/css"> 64: .main table tr td.td-docSelectorColumn, .main table tr td.td-selectedColumn,, .main table tr td.td-packageColumn { 65: vertical-align: top; 66: } 67: #spaceDocs, #selectedDocs { 68: height: 400px; 69: overflow-y: scroll; 70: } 71: </style> 72: <div id="exportApp"> 73: <table style="width:100%; border-color:blue; border-spacing: 0; " border="0"> 74: <tr> 75: <td class="td-docSelectorColumn"><h3 style="text-align:center;" id="firstColumnTitle">Your Wiki</h3> 76: <span id="spaceSelectorEl"> 77: Select a Space: 78: #set($spaces = $xwiki.getSpaces()) 79: <select name="spaceSelector" id="spaceSelector"> 80: <option value="---">---</option> 81: #foreach ($space in $spaces) 82: <option value="$space">$space</option> 83: #end 84: </select> 85: <br /> 86: #set($script = $xwiki.getURL("Admin.ExportSpaceSuggest", "view", "xpage=rdf")) 87: <form action="" onsubmit="setSpace(this.space.value); return false;"> 88: Search space: <input type="text" name="space" value="" size="20" onfocus="new ajaxSuggest(this, {script:'${script}&', varname: 'input', seps:'', offsety: 13});" /> 89: <input type="submit" value="Go" /> 90: </form> 91: <br /> 92: <span class="selectDocsActions">Select <a onclick="selectItems('checkedDoc', false);" class="Exportlink">none</a>, <a onclick="selectItems('checkedDoc', true);" class="Exportlink">all</a></span></span> 93: </td> 94: <td class="td-selectedColumn"><h3 style="text-align:center;" id="secondColumnTitle">Your Package</h3> 95: <span class="selectDocsActions">Select <a onclick="selectItems('selCheckedDoc', false);" class="Exportlink">none</a>, <a onclick="selectItems('selCheckedDoc', true);" class="Exportlink">all</a></span> 96: </td> 97: <td class="td-packageColumn"> 98: <h3 style="text-align:center;" id="secondColumnTitle">Package Info</h3> 99: </td> 100: </tr> 101: ## ROW 2 102: <tr> 103: <td class="td-docSelectorColumn"> 104: <div id="docSelectorColumn"> 105: <div id="spaceDocs"> 106: <span id="noSelectedSpace"><br /><br />Start by choosing a space to list documents</span> 107: </div> 108: </div> 109: </td> 110: <td class="td-selectedColumn"> 111: <div id="selectedColumn"> 112: <div id="spaceDocs"> 113: <table> 114: <tbody id="selectedDocsTable"> 115: </tbody> 116: </table> 117: </div> 118: </div> 119: </td> 120: <td class="td-packageColumn"> 121: <label for="appName"><i>Package Name</i></label><br /><input type="text" name="appName" id="appName" value="package"><br /><br /> 122: <label for="appDesc"><i>Description</i></label><br /><textarea name="appDesc" id="appDesc"></textarea><br /><br /> 123: <label for="appLicence"><i>Licence</i></label><br /><input type="text" name="appLicence" id="appLicence" value="LGPL"><br /><br /> 124: <label for="appAuthor"><i>Author</i></label><br /><input type="text" name="appAuthor" id="appAuthor" value="$context.user"><br /><br /> 125: <label for="appVersion"><i>Version</i></label><br /><input type="text" name="appVersion" id="appVersion" value=""><br /><br /> 126: <span id="historyEls"> 127: <label for="appWithHistory"><i>Add history</i><input type="checkbox" name="appWithHistory" id="appWithHistory" value="true"></label> 128: <br /><br /> 129: </span> 130: </td> 131: </tr> 132: ## ROW 3 133: <tr> 134: <td class="td-docSelectorColumn" style="text-align: center;"><input type="button" onclick="addDocs();" id="bttAdd" value="Add to my package >>"/></td> 135: <td class="td-selectedColumn" style="text-align: center;"><input type="button" onclick="deleteDocs();" id="bttAdd" value="<< Remove from my package"/></td> 136: <td class="td-packageColumn" style="text-align: center;"><input type="button" id="bttExport" onclick="bttExport()" value="Export" style=""/></td> 137: </tr> 138: </table> 139: </div> 140: <script type="text/javascript"> 141: Ajax.XWikiRequest = Class.create(Ajax.Request, { 142: initialize: function($super, space, docName, options, action) { 143: this.transport = Ajax.getTransport(); 144: if (action) 145: this.action = action; 146: else 147: this.action = "view"; 148: this.baseUrl = "/xwiki/bin/" + this.action; 149: 150: options = Object.clone(options); 151: var onComplete = options.onComplete || Prototype.emptyFunction; 152: options.onComplete = (function() { 153: this.returnValue(onComplete); 154: //onComplete(this.transport); 155: }).bind(this); 156: 157: $super(this.generateUrl(space, docName), options); 158: }, 159: generateUrl: function(space, docName){ 160: return this.baseUrl + "/" + space + "/" + docName; 161: }, 162: returnValue: function(callBack) { 163: if (callBack) 164: callBack(this); 165: else 166: alert("error, callback"); 167: } 168: }); 169: 170: //declaring the class 171: var SelectWatcher = Class.create(); 172: 173: //defining the rest of the class implmentation 174: SelectWatcher.prototype = { 175: 176: initialize: function(selBox, callBack) { 177: this.selBox = $(selBox); 178: //assigning our method to the event 179: this.selBox.onchange = callBack.bindAsEventListener(this); 180: } 181: 182: }; 183: var watcher = new SelectWatcher("spaceSelector", selectOptionCallBack); 184: 185: function selectOptionCallBack(evt) 186: { 187: setSpace(this.selBox.options[this.selBox.selectedIndex].value); 188: } 189: 190: function setSpace(space) 191: { 192: var pars = "action=getdocs&spacename=" + space + "&xpage=rdf"; 193: var myAjax = new Ajax.XWikiRequest( "$doc.web", "$doc.name", {method: 'get', parameters: pars, onComplete: showDocs} ); 194: } 195: 196: function showDocs(res) 197: { 198: var tableName = "listTable"; 199: var tableEl = $(tableName); 200: if (tableEl) 201: Element.remove(tableName); 202: createTable(tableName, "spaceDocs"); 203: var xml = res.transport.responseXML; 204: var docNodes = xml.getElementsByTagName("value"); 205: var noSelectedEl = $("noSelectedSpace"); 206: if (noSelectedEl&&noSelectedEl.parentNode) 207: noSelectedEl.parentNode.removeElement(noSelectedEl); 208: for (var i = 0; i < docNodes.length; i++) 209: { 210: insertTableRow(tableName, docNodes[i].firstChild.data, "doc"); 211: } 212: } 213: 214: function showImportList() 215: { 216: var pars = "action=getPackageList&xpage=rdf"; 217: var myAjax = new Ajax.XWikiRequest( "$doc.web", "$doc.name", {method: 'get', parameters: pars, onComplete: showPackageList} ); 218: } 219: 220: function showPackageList(res) 221: { 222: var tableName = "listTable"; 223: var tableEl = $(tableName); 224: if (tableEl) 225: Element.remove(tableName); 226: createTable(tableName, "spaceDocs"); 227: var xml = res.responseXML; 228: var packageNodes = xml.getElementsByTagName("value"); 229: for (var i = 0; i < packageNodes.length; i++) 230: { 231: insertTableRow(tableName, packageNodes[i].firstChild.data, "pack"); 232: } 233: } 234: 235: 236: function createTable(id, parent){ 237: $(parent).innerHTML = "<table id=" + id + "></table>"; 238: } 239: 240: 241: function insertTableRow(id, name, type){ 242: if (type == "doc") 243: new Insertion.Bottom(id, "<tr><td>" + name + "</td><td><input type='checkbox' value='"+name+"' id='check_" + name + "' class='checkedDoc'/></td></tr>"); 244: else if (type == "pack") 245: new Insertion.Bottom(id, "<tr><td><a onclick='selectPackage(\""+ name +"\")' class='Exportlink'>" + name + "</a></td></tr>"); 246: } 247: 248: function insertNewSelectedDoc(id, value) 249: { 250: insertNewDoc(id, value, 0) 251: } 252: 253: function insertNewDoc(id, value) 254: { 255: new Insertion.Bottom(id, "<tr class='selCheckedTR' id='tr_" + value + "'><td><input type='checkBox' value='" + value + "' class='selCheckedDoc' id='" + value + "' /><span id='" + value + "' class='exportDocName'>" + value + "</span></td></tr>"); 256: } 257: 258: function deleteDocs() 259: { 260: var docs = document.getElementsByClassName("selCheckedDoc"); 261: var i; 262: for (i = docs.length-1; i >= 0; i--) 263: { 264: var doc = docs[i]; 265: if (doc.checked) 266: Element.remove(doc.parentNode.parentNode); 267: } 268: } 269: 270: 271: function addDocs() 272: { 273: var docs = document.getElementsByClassName("checkedDoc"); 274: var i; 275: for (i = 0; i < docs.length; i++) 276: { 277: var doc = docs[i]; 278: if (doc.checked == true) 279: insertNewSelectedDoc("selectedDocsTable", doc.value) 280: } 281: } 282: 283: var exporturl = ""; 284: 285: function bttExport() 286: { 287: var docs = document.getElementsByClassName("exportDocName"); 288: var i; 289: // url used after the post call is made to post the list of pages 290: exporturl = "?action=export&withHistory=" + $F("appWithHistory") + "&version=" + $F("appVersion") + "&author=" + $F("appAuthor") + "&description=" + $F("appDesc") + "&licence=" + $F("appLicence") + "&packageName=" + $F("appName"); 291: 292: var pars = "action=preexport&xpage=rdf"; 293: for (i = 0; i < docs.length; i++) 294: { 295: var docname = docs[i].innerHTML; 296: pars = pars + "&toExport=" + docname; 297: } 298: var myAjax = new Ajax.XWikiRequest( "$doc.web", "$doc.name", {method: 'post', parameters: pars, onComplete: bttExportComplete } ); 299: } 300: 301: function bttExportComplete(xmlResponse) 302: { 303: window.location = exporturl; 304: } 305: 306: function selectItems(classId, selected) 307: { 308: var docs = document.getElementsByClassName(classId); 309: var i; 310: for (i = 0; i < docs.length; i++) 311: { 312: var doc = docs[i]; 313: doc.checked = selected; 314: } 315: } 316: 317: function getXmlValue(tag, xml) 318: { 319: var nodes = xml.getElementsByTagName(tag); 320: if (nodes.length > 0 && nodes[0].firstChild) 321: return nodes[0].firstChild.data; 322: else 323: return ""; 324: } 325: 326: </script> 327: {/pre} 328: #end
Welcome
Welcome to this XWiki!
Quick Links
DSSF 2008
DCNM 2009
HCCF 2010
Document Index
Sandbox
My Recent Modifications
ASSIGNMENTNAME