Questetra-Addon-XML ダイジェストHTMLの生成

Questetra-Addon-XML ダイジェストHTMLの生成 (Questetra-Addon-XML Generate Digest-HTML)
HTML Code を生成します。Addon-XML ファイル(Questetra BPMS用)がパースされ、summary、last-modified、config などがロケール情報に従って抽出されます(XMLエスケープのデコードはされません)。その後、Wordpress用のシンプルなHTMLコードが生成されます。
https://support.questetra.com/ja/addons/questetra-addon-xml-generate-digest-html/
2019-01-27 (C) Questetra, Inc. (MIT License)
Configs
  • A: Addon-XML が格納されているファイル型データを選択してください(複数添付はサポート外) *
  • B: 抽出情報 の Locale コードをセットしてください (例 “ja”, “”) #{EL}
  • C0: DefaultLang Label が格納される文字列型データを選択してください (更新)
  • C: Label が格納される文字列型データを選択してください (更新)
  • D: Summary が格納される文字列型データを選択してください (更新)
  • E: HelpPageUrl が格納される文字列型データを選択してください (更新)
  • F: LastModified が格納される文字列型データを選択してください (更新)
  • G: EngineType が格納される文字列型データを選択してください (更新)
  • H: Script が格納される文字列型データを選択してください (更新)
  • I: ダイジェストHTMLが格納される文字列型データを選択してください (更新)
  • J: EngineType が格納される文字列型データを選択してください (更新)
Script
// (c) 2018, Questetra, Inc. (the MIT License)
// Rhino engine (engine type: 0) to use E4X

//////// START "main()" ////////
main();
function main(){ 

//// == Config Retrieving / 工程コンフィグの参照 ==
var dataIdA = configs.get( "conf_DataIdA" ) + "";
var localeCode = configs.get( "conf_LocaleCode" ) + "";
var dataIdC0 = configs.get( "conf_DataIdC0" ) + "";
var dataIdC = configs.get( "conf_DataIdC" ) + "";
var dataIdD = configs.get( "conf_DataIdD" ) + "";
var dataIdE = configs.get( "conf_DataIdE" ) + "";
var dataIdF = configs.get( "conf_DataIdF" ) + "";
var dataIdG = configs.get( "conf_DataIdG" ) + "";
var dataIdH = configs.get( "conf_DataIdH" ) + "";
var dataIdI = configs.get( "conf_DataIdI" ) + "";
var dataIdJ = configs.get( "conf_DataIdJ" ) + "";
// 'java.lang.String' (String Obj) to javascript primitive 'string'


//// == Data Retrieving / ワークフローデータの参照 ==
var myFiles = engine.findDataByNumber( dataIdA ); 
// java.util.ArrayList
if (myFiles === null || myFiles.size() != 1) {
  throw new Error( 'Attachment of multiple files can not be supported.' );
}
var myFileText = '';
var myLineCounter = 0;
fileRepository.readFile(myFiles.get(0), "UTF-8", function(line) {
    myFileText += line + '\n';
    myLineCounter++;
});
engine.log( "#Line of Text-File: " + myLineCounter );
// engine.log( myFileText ); // debug


//// == Calculating / 演算 ==
/// parse XML (ECMAScript for XML (E4X))
myFileText = myFileText
//  .replace(/^<\?xml\s+version\s*=\s*(["'])[^\1]+\1[^?]*\?>/, "")
  .replace(/<\?xml[^>]*\?>/, "") // E4X bug 336551
  .trim(); // Removes space, tab, no-break space, etc. and LF, CR
var xmlObj = new XML( myFileText );
var i = 0;

var myDefaultLabel = "";
for (i = 0; i < xmlObj.label.length(); i++){
  if( xmlObj.label[i].attribute("locale").toString() == "" ){
    myDefaultLabel = xmlObj.label[i].toString();
    break;
  }
}

var myLabel = xmlObj.label.(@locale == localeCode).toString();
if( myLabel === ""){
  engine.log( "Label '" + localeCode + "' is not defined." );
  for (i = 0; i < xmlObj.label.length(); i++){
    if( xmlObj.label[i].attribute("locale").toString() == "" ){
      myLabel = xmlObj.label[i].toString();
      engine.log( "- default is applied: " + myLabel );
      break;
    }
  }
}
var mySummary = xmlObj.summary.(@locale == localeCode).toString();
if( mySummary === ""){
  engine.log( "Summary '" + localeCode + "' is not defined." );
  for (i = 0; i < xmlObj.summary.length(); i++){
    if( xmlObj.summary[i].attribute("locale").toString() == "" ){
      mySummary = xmlObj.summary[i].toString();
      engine.log( "- default is applied: " + mySummary );
      break;
    }
  }
}
var myHelpPageUrl = xmlObj["help-page-url"].(@locale == localeCode).toString();
if( myHelpPageUrl === ""){
  engine.log( "HelpPageUrl '" + localeCode + "' is not defined." );
  for (i = 0; i < xmlObj["help-page-url"].length(); i++){
    if( xmlObj["help-page-url"][i].attribute("locale").toString() == "" ){
      myHelpPageUrl = xmlObj["help-page-url"][i].toString();
      engine.log( "- default is applied: " + myHelpPageUrl );
      break;
    }
  }
}
var myLastModified = xmlObj["last-modified"].toString();
var myEngineType   = xmlObj["engine-type"].toString();
var myScript       = xmlObj.script.toString();
var myLicense      = xmlObj.license.toString();
var myIcon         = xmlObj.icon.toString();

var myConfigs = [];
var myConfigsRequired = [];
var myConfigsEl = [];
for(i = 0; i < xmlObj.configs.config.length(); i++ ){
  myConfigs[i] = xmlObj.configs.config[i].label.(@locale == localeCode).toString();
  if( myConfigs[i] === "" ){
    engine.log( "config[" + i + "].label '" + localeCode + "' is not defined." );
    for(var j = 0; j < xmlObj.configs.config[i].label.length(); j++){
      if( xmlObj.configs.config[i].label[j].attribute("locale").toString() == "" ){
        myConfigs[i] = xmlObj.configs.config[i].label[j].toString();
        engine.log( "- default is applied: " + myConfigs[i] );
        break;
      }
    }
  }

  if( xmlObj.configs.config[i].attribute("required").toString() == "true" ){
    myConfigsRequired[i] = "required";
  }else{
    myConfigsRequired[i] = "";
  }

  if( xmlObj.configs.config[i].attribute("el-enabled").toString() == "true" ){
    myConfigsEl[i] = "el";
  }else{
    myConfigsEl[i] = "";
  }
}

/// Generates HTML
var myHtml = '';

/// Addon Name
myHtml += '<!-- wp:html -->\n';
myHtml += '[su_box title="' + myLabel;
if( myLabel !== myDefaultLabel ){
  myHtml += ' (' + myDefaultLabel +  ')';
}
myHtml += '" style="soft" box_color="#ff99ff" title_color="#000000" radius="0"]';
myHtml += mySummary + '<br><a href="' + myHelpPageUrl + '" target="_Blank">';
myHtml += myHelpPageUrl + '</a><br><span style="float: right;">';
myHtml += myLastModified + ' ' + myLicense + '</span>[/su_box';
myHtml += ']\n';
myHtml += '<!-- /wp:html -->\n\n';

/// Config
myHtml += '<!-- wp:html -->\n';
myHtml += '[su_spoiler title="Configs" open="yes" style="modern-light"';
myHtml += ' icon="plus-square-1" anchor="configs"]';
myHtml += '<ul class="fa-ul">\n';
for(i = 0; i < xmlObj.configs.config.length(); i++ ){
  myHtml += '<li><span class="fa-li">';
  if( xmlObj.configs.config[i].attribute("form-type").toString() == "SELECT" ){
    myHtml += '<i class="fal fa-caret-square-down fa-lg"></i></span> ';
  }else{
    myHtml += '<i class="fal fa-pen-square fa-lg"></i></span> ';
  }
  myHtml += myConfigs[i];
  if( myConfigsRequired[i] === "required" ){
    myHtml += '<span style="color:#990000;"> *</span>';
  }
  if( myConfigsEl[i] === "el" ){
    myHtml += '<span style="color:#000099;"> <sup style="font-style:italic;">#{EL}</sup></span>';
  }
  myHtml += '</li>\n';
}
myHtml += '</ul>[/su_spoiler';
myHtml += ']\n';
myHtml += '<!-- /wp:html -->\n\n';

/// Script
myHtml += '<!-- wp:shortcode -->\n';
myHtml += '[su_spoiler title="Script" style="modern-light"';
myHtml += ' icon="plus-square-1" anchor="script"]';
myHtml += '<!-- /wp:shortcode -->\n\n';

myHtml += '<!-- wp:code -->\n';
myHtml += '<pre><code class="JavaScript">';
myHtml += myScript.replace(/&/g, '&amp;')
            .replace(/\[/g, '&#91;')
            .replace(/\]/g, '&#93;')
            .replace(/</g, '&lt;')
            .replace(/>/g, '&gt;');
myHtml += '</code></pre>\n';
myHtml += '<!-- /wp:code -->\n\n';

myHtml += '<!-- wp:shortcode -->\n';
myHtml += '[/su_spoiler';
myHtml += ']\n';
myHtml += '<!-- /wp:shortcode -->\n\n';

/// Icon
myHtml += '<!-- wp:image {"align":"right","ampNoLoading":true} -->\n';
myHtml += '<div data-amp-noloading="true" class="wp-block-image"><figure class="alignright">';
myHtml += '<img src="data:image;base64,';
myHtml += myIcon;
myHtml += '"></figure></div>\n';
myHtml += '<!-- /wp:image -->\n\n';

/// SU Divider
myHtml += '<!-- wp:shortcode -->\n';
myHtml += '[su_divider top="no" style="dashed"';
myHtml += ' divider_color="#009900" size="8" margin="30"]\n';
myHtml += '<!-- /wp:shortcode -->\n\n';

/// Download etc
myHtml += '<!-- wp:heading {"level":3} -->\n';
myHtml += '<h3><i class="fal fa-cloud-download-alt"></i> Download</h3>\n';
myHtml += '<!-- /wp:heading -->\n\n';
myHtml += '<!-- wp:list -->\n';
myHtml += '<ul><li>example1.xml</li></ul>\n';
myHtml += '<!-- /wp:list -->\n\n';
myHtml += '<!-- wp:heading {"level":3} -->\n';
myHtml += '<h3><i class="fal fa-images"></i> Capture</h3>\n';
myHtml += '<!-- /wp:heading -->\n\n';
myHtml += '<!-- wp:heading {"level":3} -->\n';
myHtml += '<h3><i class="fal fa-lightbulb-exclamation"></i> Notes</h3>\n';
myHtml += '<!-- /wp:heading -->\n\n';
myHtml += '<!-- wp:list {"ordered":true} -->\n';
myHtml += '<ol><li>(addon note 1)</li></ol>\n';
myHtml += '<!-- /wp:list -->\n\n';
myHtml += '<!-- wp:heading {"level":3} -->\n';
myHtml += '<h3><i class="fal fa-balance-scale"></i> See also</h3>\n';
myHtml += '<!-- /wp:heading -->\n\n';


//// == Data Updating / ワークフローデータへの代入 ==
if( dataIdC0 !== "" ){
  engine.setDataByNumber( dataIdC0, myDefaultLabel );
}
if( dataIdC !== "" ){
  engine.setDataByNumber( dataIdC, myLabel );
}
if( dataIdD !== "" ){
  engine.setDataByNumber( dataIdD, mySummary );
}
if( dataIdE !== "" ){
  engine.setDataByNumber( dataIdE, myHelpPageUrl );
}
if( dataIdF !== "" ){
  engine.setDataByNumber( dataIdF, myLastModified );
}
if( dataIdG !== "" ){
  engine.setDataByNumber( dataIdG, myEngineType );
}
if( dataIdH !== "" ){
  engine.setDataByNumber( dataIdH, myScript );
}
if( dataIdI !== "" ){
  engine.setDataByNumber( dataIdI, myHtml );
}
if( dataIdJ !== "" ){
  engine.setDataByNumber( dataIdJ, myLicense );
}

} //////// END "main()" ////////

// Methods of the XML object (E4X)
// - https://wso2.com/project/mashup/0.2/docs/e4xquickstart.html
// - Objects marked with a * are also available on XML List objects.
// appendChild(child), attribute(attributeName) *, attributes() *,
// child(propertyName) *, childIndex(), children() *,
// comments() *, contains(value) *, copy() *, descendants([name]) *,
// elements([name]) *, hasComplexContent() *, hasSimpleContent() *,
// inScopeNamespaces(), insertChildAfter(child1, child2),
// insertChildBefore(child1, child2), length() *, localName(), name(),
// namespace([prefix]), namespaceDeclarations(), nodeKind(),
// normalize() *, parent() *, processingInstructions([name]) *,
// prependChild(value), removeNamespace(namespace),
// replace(propertyName, value), setChildren(value), 
// setLocalName(name), setName(name), setNamespace(ns)
// text() *, toString() *, toXMLString() *, valueOf() *

Download

Capture

See also

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

%d人のブロガーが「いいね」をつけました。