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
Show line numbers
#set($action = $request.action) #if ($action == "getdocs") $response.setContentType("text/xml") #set($space = $request.spacename) <response> #set($docs = $xwiki.searchDocuments("where doc.web='$request.spacename' order by doc.date desc")) #foreach ($docname in $docs) <value>$xwiki.getXMLEncoded("${docname}")</value> #end </response> #elseif ($action == "getPackageList") $response.setContentType("text/xml") #set($alist = $doc.getAttachmentList()) <response> #foreach ($oAttach in $alist) <value>$oAttach.getFilename()</value> #end </response> #elseif ($action == "preexport") #set($ToExport = $request.getParameterValues("toExport")) #set($session = $request.getSession(false)) #set($ok = $session.setAttribute("exportdata", $ToExport)) OK #elseif ($action == "export") #set($session = $request.getSession(false)) #set($ToExport = $session.getAttribute("exportdata")) #set($withHistory = $request.withHistory) #set($author = $request.author) #set($description = $request.description) #set($licence = $request.licence) #set($version = $request.version) #set($packageName = $request.packageName) #set($export = $xwiki.package) #if ($withHistory=="true") $export.setWithVersions(true) #else $export.setWithVersions(false) #end #if ($author) $export.setAuthorName($author) #end #if ($description) $export.setDescription($description) #end #if ($licence) $export.setLicence($licence) #end #if ($version) $export.setVersion($version) #end $export.setName($packageName) #foreach ($itemexp in $ToExport) $export.add($itemexp, 0) #end $export.export() #else {pre} <style type="text/css"> .main table tr td.td-docSelectorColumn, .main table tr td.td-selectedColumn,, .main table tr td.td-packageColumn { vertical-align: top; } #spaceDocs, #selectedDocs { height: 400px; overflow-y: scroll; } </style> <div id="exportApp"> <table style="width:100%; border-color:blue; border-spacing: 0; " border="0"> <tr> <td class="td-docSelectorColumn"><h3 style="text-align:center;" id="firstColumnTitle">Your Wiki</h3> <span id="spaceSelectorEl"> Select a Space: #set($spaces = $xwiki.getSpaces()) <select name="spaceSelector" id="spaceSelector"> <option value="---">---</option> #foreach ($space in $spaces) <option value="$space">$space</option> #end </select> <br /> #set($script = $xwiki.getURL("Admin.ExportSpaceSuggest", "view", "xpage=rdf")) <form action="" onsubmit="setSpace(this.space.value); return false;"> Search space: <input type="text" name="space" value="" size="20" onfocus="new ajaxSuggest(this, {script:'${script}&', varname: 'input', seps:'', offsety: 13});" /> <input type="submit" value="Go" /> </form> <br /> <span class="selectDocsActions">Select <a onclick="selectItems('checkedDoc', false);" class="Exportlink">none</a>, <a onclick="selectItems('checkedDoc', true);" class="Exportlink">all</a></span></span> </td> <td class="td-selectedColumn"><h3 style="text-align:center;" id="secondColumnTitle">Your Package</h3> <span class="selectDocsActions">Select <a onclick="selectItems('selCheckedDoc', false);" class="Exportlink">none</a>, <a onclick="selectItems('selCheckedDoc', true);" class="Exportlink">all</a></span> </td> <td class="td-packageColumn"> <h3 style="text-align:center;" id="secondColumnTitle">Package Info</h3> </td> </tr> ## ROW 2 <tr> <td class="td-docSelectorColumn"> <div id="docSelectorColumn"> <div id="spaceDocs"> <span id="noSelectedSpace"><br /><br />Start by choosing a space to list documents</span> </div> </div> </td> <td class="td-selectedColumn"> <div id="selectedColumn"> <div id="spaceDocs"> <table> <tbody id="selectedDocsTable"> </tbody> </table> </div> </div> </td> <td class="td-packageColumn"> <label for="appName"><i>Package Name</i></label><br /><input type="text" name="appName" id="appName" value="package"><br /><br /> <label for="appDesc"><i>Description</i></label><br /><textarea name="appDesc" id="appDesc"></textarea><br /><br /> <label for="appLicence"><i>Licence</i></label><br /><input type="text" name="appLicence" id="appLicence" value="LGPL"><br /><br /> <label for="appAuthor"><i>Author</i></label><br /><input type="text" name="appAuthor" id="appAuthor" value="$context.user"><br /><br /> <label for="appVersion"><i>Version</i></label><br /><input type="text" name="appVersion" id="appVersion" value=""><br /><br /> <span id="historyEls"> <label for="appWithHistory"><i>Add history</i><input type="checkbox" name="appWithHistory" id="appWithHistory" value="true"></label> <br /><br /> </span> </td> </tr> ## ROW 3 <tr> <td class="td-docSelectorColumn" style="text-align: center;"><input type="button" onclick="addDocs();" id="bttAdd" value="Add to my package >>"/></td> <td class="td-selectedColumn" style="text-align: center;"><input type="button" onclick="deleteDocs();" id="bttAdd" value="<< Remove from my package"/></td> <td class="td-packageColumn" style="text-align: center;"><input type="button" id="bttExport" onclick="bttExport()" value="Export" style=""/></td> </tr> </table> </div> <script type="text/javascript"> Ajax.XWikiRequest = Class.create(Ajax.Request, { initialize: function($super, space, docName, options, action) { this.transport = Ajax.getTransport(); if (action) this.action = action; else this.action = "view"; this.baseUrl = "/xwiki/bin/" + this.action; options = Object.clone(options); var onComplete = options.onComplete || Prototype.emptyFunction; options.onComplete = (function() { this.returnValue(onComplete); //onComplete(this.transport); }).bind(this); $super(this.generateUrl(space, docName), options); }, generateUrl: function(space, docName){ return this.baseUrl + "/" + space + "/" + docName; }, returnValue: function(callBack) { if (callBack) callBack(this); else alert("error, callback"); } }); //declaring the class var SelectWatcher = Class.create(); //defining the rest of the class implmentation SelectWatcher.prototype = { initialize: function(selBox, callBack) { this.selBox = $(selBox); //assigning our method to the event this.selBox.onchange = callBack.bindAsEventListener(this); } }; var watcher = new SelectWatcher("spaceSelector", selectOptionCallBack); function selectOptionCallBack(evt) { setSpace(this.selBox.options[this.selBox.selectedIndex].value); } function setSpace(space) { var pars = "action=getdocs&spacename=" + space + "&xpage=rdf"; var myAjax = new Ajax.XWikiRequest( "$doc.web", "$doc.name", {method: 'get', parameters: pars, onComplete: showDocs} ); } function showDocs(res) { var tableName = "listTable"; var tableEl = $(tableName); if (tableEl) Element.remove(tableName); createTable(tableName, "spaceDocs"); var xml = res.transport.responseXML; var docNodes = xml.getElementsByTagName("value"); var noSelectedEl = $("noSelectedSpace"); if (noSelectedEl&&noSelectedEl.parentNode) noSelectedEl.parentNode.removeElement(noSelectedEl); for (var i = 0; i < docNodes.length; i++) { insertTableRow(tableName, docNodes[i].firstChild.data, "doc"); } } function showImportList() { var pars = "action=getPackageList&xpage=rdf"; var myAjax = new Ajax.XWikiRequest( "$doc.web", "$doc.name", {method: 'get', parameters: pars, onComplete: showPackageList} ); } function showPackageList(res) { var tableName = "listTable"; var tableEl = $(tableName); if (tableEl) Element.remove(tableName); createTable(tableName, "spaceDocs"); var xml = res.responseXML; var packageNodes = xml.getElementsByTagName("value"); for (var i = 0; i < packageNodes.length; i++) { insertTableRow(tableName, packageNodes[i].firstChild.data, "pack"); } } function createTable(id, parent){ $(parent).innerHTML = "<table id=" + id + "></table>"; } function insertTableRow(id, name, type){ if (type == "doc") new Insertion.Bottom(id, "<tr><td>" + name + "</td><td><input type='checkbox' value='"+name+"' id='check_" + name + "' class='checkedDoc'/></td></tr>"); else if (type == "pack") new Insertion.Bottom(id, "<tr><td><a onclick='selectPackage(\""+ name +"\")' class='Exportlink'>" + name + "</a></td></tr>"); } function insertNewSelectedDoc(id, value) { insertNewDoc(id, value, 0) } function insertNewDoc(id, value) { 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>"); } function deleteDocs() { var docs = document.getElementsByClassName("selCheckedDoc"); var i; for (i = docs.length-1; i >= 0; i--) { var doc = docs[i]; if (doc.checked) Element.remove(doc.parentNode.parentNode); } } function addDocs() { var docs = document.getElementsByClassName("checkedDoc"); var i; for (i = 0; i < docs.length; i++) { var doc = docs[i]; if (doc.checked == true) insertNewSelectedDoc("selectedDocsTable", doc.value) } } var exporturl = ""; function bttExport() { var docs = document.getElementsByClassName("exportDocName"); var i; // url used after the post call is made to post the list of pages exporturl = "?action=export&withHistory=" + $F("appWithHistory") + "&version=" + $F("appVersion") + "&author=" + $F("appAuthor") + "&description=" + $F("appDesc") + "&licence=" + $F("appLicence") + "&packageName=" + $F("appName"); var pars = "action=preexport&xpage=rdf"; for (i = 0; i < docs.length; i++) { var docname = docs[i].innerHTML; pars = pars + "&toExport=" + docname; } var myAjax = new Ajax.XWikiRequest( "$doc.web", "$doc.name", {method: 'post', parameters: pars, onComplete: bttExportComplete } ); } function bttExportComplete(xmlResponse) { window.location = exporturl; } function selectItems(classId, selected) { var docs = document.getElementsByClassName(classId); var i; for (i = 0; i < docs.length; i++) { var doc = docs[i]; doc.checked = selected; } } function getXmlValue(tag, xml) { var nodes = xml.getElementsByTagName(tag); if (nodes.length > 0 && nodes[0].firstChild) return nodes[0].firstChild.data; else return ""; } </script> {/pre} #end
Welcome
Welcome to this XWiki!
Quick Links
DSSF 2008
DCNM 2009
HCCF 2010
Document Index
Sandbox
My Recent Modifications
ASSIGNMENTNAME