#set($itemId="TLRM-19451")
#set($workingDay="2021-11-25")
#set($item=$trackerService.getWorkItem("TeamLiveResMngt", $itemId))
$item.getCustomFieldPrototype("workingDay")
#set($workingDay=$item.getCustomField("workingDay").parse($workingDay))
$transactionService.beginTx()
$item.setCustomField("workingDay", $workingDay)
##$item.save()
$transactionService.commitTx()
Wiki脚本,不知道应该用哪种代码格式,现在用的PHP。
当然还需要页面。
<style type="text/css">
#container {
position:absolute;
top:90px;
bottom:50px;
left:10px;
right:10px;
}
#controls > span {
padding: 8px 10px;
background-color: #F5F5F5;
border: 1px solid #DEDEDE;
}
#xpreview {
width: 49%;
height: 100%;
border: 1px solid #ccc;
}
#xpreview {
float: right;
}
.CodeMirror{
width: 49%;
height: 100% !important;
float:left;
border:solid 1px #F0F0F0;
}
input#txtUpdateInterval{
width:50px;
}
td.key,ul.star>li{
cursor:pointer;
color: #00D;
}
</style>
#set($vcontext = $xwiki.getContext().get("vcontext"))
#set( $extraKws="")
#foreach($key in $vcontext.getKeys())
#if( $key == "extraKws" || $key == "vcontext") #elseif( $extraKws == "") #set( $extraKws="'$$key'") #else #set( $extraKws="$extraKws,'$$key'") #end
#end
{pre}
<script type="text/javascript" src="/polarion/syntax/codemirror/lib/codemirror.js"></script>
<script type="text/javascript" src='/polarion/syntax/codemirror/mode/velocity/velocity.js'></script>
<script type="text/javascript" src="/polarion/syntax/codemirror/addon/display/fullscreen.js"></script>
<script type="text/javascript">
var myCodeMirror;
// append functions and vars to document object to prevent scope related problems
document.wikipreview = {};
// interval timer for updating wiki preview
document.wikipreview._intervalTimer = null;
// old content to prevent unnecessary requests
document.wikipreview._oldContent = "";
// event handler when wiki source is changed
document.wikipreview.onSourceUpdate = function() {
if(document.wikipreview._intervalTimer == null || document.getElementById("cbUpdateWhileTyping").checked != true) {
document.wikipreview.startTimer();
}
}
var wikiUsage='\{param'+'eter:key|value=ZZZZ\}\n${escapeTool.H}set(${escapeTool.D}key = ${escapeTool.D}pageParameters.getAsString(${escapeTool.Q}key${escapeTool.Q}))\n${escapeTool.H}if(${escapeTool.D}key.indexOf(".")==-1)${escapeTool.H}set(${escapeTool.D}vcontext = ${escapeTool.D}xwiki.getContext().get(${escapeTool.Q}vcontext${escapeTool.Q}))\n${escapeTool.H}set(${escapeTool.D}obj = ${escapeTool.D}vcontext.get(${escapeTool.D}key))\n${escapeTool.H}set(${escapeTool.D}usages = ${escapeTool.D}apiUtil.getUsage(${escapeTool.D}obj))${escapeTool.H}else${escapeTool.H}set(${escapeTool.D}usages=${escapeTool.D}apiUtil.findUsage(${escapeTool.D}key))${escapeTool.H}end\n1.1 ${escapeTool.D}key\n${escapeTool.H}foreach(${escapeTool.D}usage in ${escapeTool.D}usages)\n* ${escapeTool.D}usage\n${escapeTool.H}end';
var wikiVars='${escapeTool.H}set(${escapeTool.D}vcontext = ${escapeTool.D}xwiki.getContext().get(${escapeTool.Q}vcontext${escapeTool.Q}))\n{table}\nKey|Value|Type\n${escapeTool.H}foreach(${escapeTool.D}key in ${escapeTool.D}vcontext.getKeys())\n${escapeTool.H}if( ${escapeTool.D}key != ${escapeTool.Q}key${escapeTool.Q} && ${escapeTool.D}key != ${escapeTool.Q}vcontext${escapeTool.Q})\n${escapeTool.D}key|${escapeTool.D}vcontext.get(${escapeTool.D}key)|${escapeTool.D}vcontext.get(${escapeTool.D}key).getClass()\n${escapeTool.H}end\n${escapeTool.H}end\n{table}';
var isApiInserted=false;
function doShowVars(){
makePreview(wikiVars,function(){
jQuery("table.polarion-wiki-table tr").each(function(){
jQuery(this).children("td:eq(0)").addClass("key").click(function(){
var val=jQuery(this).text();
#if($apiUtil)
doLoadApi(val);
#else
isApiInserted = true;
myCodeMirror.doc.replaceSelection("${escapeTool.D}"+val);
#end
});
});
});
return false;
}
function doLoadApi(val){
makePreview(wikiUsage.replace("ZZZZ",val),function(){
jQuery("${escapeTool.H}xpreview li").click(function(){
var me=jQuery(this);
var api=me.text();
var val=jQuery("${escapeTool.H}xpreview h3").text()
jQuery("${escapeTool.H}api").text(val+"."+api);
var pos=api.indexOf("(");
api=api.substring(0,pos+1)+")";
pos=val.indexOf(".");
var txt;
if(pos==-1){
txt="${escapeTool.D}"+val+"."+api;
}else{
txt=api;
}
isApiInserted = true;
myCodeMirror.doc.replaceSelection(txt);
})
});
}
jQuery(function(){
var strMacros="activity-stream attachment code column create-page-button create-testrun-button createprojectbutton dashboard-property document-property document-workitems document execute-testrun-button export-tests fact highchart-report hint image import-automated-test-results import-test-results includeForm includeTopic keep-together latestbuild line-chart live-plan page-break pages parameter-editor parameter-form-save parameter-form-submit parameter-form parameter piechart plan-burndown plan-burnup plan-label plan-open-in-table plan-progress plan-status-button plans portallink pre project-property projectgroup-property project quote recent-testruns recently-modified-workitems regiontitle report section showNotPrefix showPrefix show space-property style table testrecords testrun-label testrun-overview testrun-property testrun-status-button timepoint toc update-report-footer users user workitems-board workitems workitem /pre";
var cfg={
lineWrapping: true,
lineNumbers: true,
autofocus:true,
mode:"text/velocity",
extraKeys: {
"F11": function(cm) {
cm.setOption("fullScreen", !cm.getOption("fullScreen"));
},
"Esc": function(cm) {
if (cm.getOption("fullScreen")) cm.setOption("fullScreen", false);
}
}
};
cfg.macros=strMacros.split(" ");
cfg.extraKeywords=[$extraKws];
myCodeMirror = CodeMirror.fromTextArea(document.getElementById("source"), cfg);
myCodeMirror.focus();
myCodeMirror.on("change", function(){
document.wikipreview.onSourceUpdate();
});
#if($apiUtil)
jQuery("${escapeTool.H}apiKey").blur(function(){
var me=jQuery(this);
if(me.val() != ""){
doLoadApi(me.val())
}
});
#end
});
function makePreview(content,callback){
var url = "/polarion/wiki/bin/preview/project/$page.space.projectId/page/$page.space.id/$page.name?xpage=xpreview";
var params={
isSave:false,
xcontent: content
};
jQuery.post(url,params,function(data){
loadPreviewCallback(data, null);
jQuery("#viewcontent").show();
if(typeof callback =="function") { callback(); }
});
}
// request preview content
document.wikipreview.startRequest = function() {
var wiki=myCodeMirror.getValue();
if(document.wikipreview._oldContent == wiki) {
return false;
}
document.wikipreview._oldContent = wiki;
if(isApiInserted ){ isApiInserted =false; return false; }
var content = wiki;
//content = content.replace(/[\%]/gi, "%25");
//content = content.replace(/[\&]/gi, "%26");
//content = content.replace(/[\+]/gi, "%2b");
//var params = "isSave=false&xcontent=" + encodeURI(content);
makePreview(content);
return false;
}
// timer for preview requests
document.wikipreview.startTimer = function() {
if(document.wikipreview._intervalTimer != null) {
window.clearInterval(document.wikipreview._intervalTimer);
}
document.wikipreview._intervalTimer = window.setInterval(document.wikipreview.startRequest, jQuery("#txtUpdateInterval").val());
}
// override polarion preview functions that are not necessary for this preview and would break macro functionality
function disablePreviewButtons(val) {
}
function RestoreSave() {
}
</script>
<link type="text/css" rel="stylesheet" href="/polarion/syntax/codemirror/lib/codemirror.css"/>
<link type="text/css" rel='stylesheet' href="/polarion/syntax/codemirror/doc/docs.css"/>
<link type="text/css" rel='stylesheet' href="/polarion/syntax/codemirror/addon/display/fullscreen.css"/>
{/pre}
1 Wiki 预览编辑
<div id="container">
<div id="controls">
<span><label for='cbUpdateWhileTyping'>自动更新</label> <input type="checkbox" id="cbUpdateWhileTyping" checked="true" /></span>
<span>更新间隔: <input type="textinput" id="txtUpdateInterval" value="1000" onkeypress="document.wikipreview.onIntervalChanged();"/> 毫秒</span>
<span><a href="/polarion/#/wiki/Doc/SyntaxHelp" target="_blank">打开语法帮助</a></span>
<span style='color:ff9933'>注意:这里不提供保存功能,请及时复制并保存</span>
<span><a href='javascript:void(0)' onclick='doShowVars()'>Wiki变量</a></span>
#if($apiUtil)
<span><input type='text' size='10' id='apiKey'/></span><span id='api' title='API 参考'></span>
#end
</div>
<div style='width:49%; background-color:#F0F0F0;float:left; margin-top:10px;padding:3px;' align='center'>Wiki代码</div>
<div style='width:49%; background-color:#F0F0F0;float:right; margin-top:10px;padding:3px;' align='center'>预览</div>
<div style='clear:both;'></div>
<textarea id="source" onkeypress="document.wikipreview.onSourceUpdate();"></textarea>
<div id="xpreview"></div>
</div>
<!-- menu elements from Polarion. This elements are required in the Polarion functions for requesting the preview content. Since we are not really editing a wiki page these items are neither available nor necessary -->
<span id="menuView"/>
<span id="menuPreview"/>