/*
This template will take a snapshot the current page, and create a page directly below it using that
snapshot. The page is titled as "CURRENT_PAGE_NAME - CURRENT_DATE_AND_TIME"
*/
// CALL NEEDED EXTENSIONS; MAKE SURE DEKIAPI2 IS INSTALLED FOR THE PUBMED FUNCTIONS
dekiapi();
<div id="newpagediv">
// SET UP THE PLEASE WAIT DIV, BE SURE TO HIDE IT ON LOAD IN THE CSS
<div id="waitdiv">
<img src="http://developer.mindtouch.com/@api/deki/files/4851/=ajax-loader.gif" id="waitgif"/>
<br />
"Please wait...";
</div>
<div id="creatediv">
// CREATE HIDDEN VARIABLES FOR THE CTOR TO USE
<input type="hidden" value=(page.path) id="ppath"/>
<input type="hidden" value=(site.uri) id="siteuri"/>
<input type="hidden" value=(page.title .. ' - ' .. date.now) id="pname" />
<input type="button" value="Snapshot this page" ctor="
var working = false;
when($this.click){
// MAKE SURE WE'RE OK TO PROCEED, THEN SHOW THE WAIT DIV, AND
// PUBLISH A MESSAGE ON THE NEWPAGE CHANNEL WITH THE VARIABLES DEFINED ABOVE
if (working == false){
working = true;
#creatediv.hide();
#waitdiv.show();
@newpage({siteuri: #siteuri.val(), pname: #pname.val(), ppath: #ppath.val()});
};
}
when(@newpage) {
// DEFINE THE PAGE PATH, THEN GET THE PAGE API SO WE CAN CREATE THE PAGE
var page_path = @newpage.ppath + '/' + @newpage.pname;
var site_api = {{site.api}};
var page_api = site_api + '/pages/=' + Deki.url.encode(Deki.url.encode(page_path));
MindTouch.Web.Get(page_api, null, function(xhr){
// SUCCESSFULLY DID THE WEB.GET... LET'S CHECK TO MAKE SURE THE
// PAGE DOESN'T ALREADY EXIST - THIS IS UNLIKELY GIVEN THE
// UNIQUE TITLE, BUT BETTER SAFE THAN SORRY
if (xhr.status == '200'){
alert('That page already exists. Please choose a different name.');
#creatediv.show();
#waitdiv.hide();
#pname.val('Enter ' + {{string.tolower(buttonname)}} + ' name');
working = false;
};
if (xhr.status == '404'){
// PAGE DOESN'T EXIST, SO LET'S GET THE API FOR THE CURRENT PAGE
var cpagepath = @newpage.ppath;
var template_api = site_api + '/pages/=' + Deki.url.encode(Deki.url.encode(cpagepath));
// ATTEMPT TO CREATE THE PAGE IN SAVE MODE
MindTouch.Deki.ReadPageContents(template_api, { mode: 'view' },
function(xhr) {
// lookup body[not(target)]
var contents = $(xhr.xml).find('body:not([target])').text();
// use as content on UpdatePage
var api_params = {
mode: 'edit'
};
MindTouch.Deki.UpdatePageContents(page_api, contents, api_params,
function(){
// SUCCESS! LET'S GO TO THAT PAGE NOW
@loadnewpage({siteuri: @newpage.siteuri, ppath: @newpage.ppath, pname: @newpage.pname});
},
function(){
// FAIL! LET THE USER KNOW SOMETHING BROKE
alert('Page create failed. Please try again.');
working = false;
});
}
);
}
},
function(){
// THE WEB.GET HAS FAILED. LET THE USER KNOW
alert('Page read failed. Status: ' + xhr.statusText);
working = false;
});
};
when(@loadnewpage) {
// LOAD THE NEW PAGE IN THE CURRENT BROWSER WINDOW
var newpath = (@loadnewpage.siteuri + @loadnewpage.ppath + '/' + @loadnewpage.pname);
window.location = (newpath);
};
"/>
</div>
</div>
<style type="text/css">"
#waitdiv {
display: none;
text-align: center;
}
#creatediv {
text-align: center;
}
"</style>
| Images 0 | ||
|---|---|---|
| No images to display in the gallery. |
Copyright © 2011 MindTouch, Inc. Powered by