私はこの質問に対する以前の両方の回答に賛成票を投じました。誰かが何か活動をするまで、私はこの質問をちょっと忘れていたことを認めます。
最終的には、上記の手法を組み合わせて実行しました。提案されたように、グローバルスタイルシートを見つけることができました。私がやったことは、そのスタイルシートにあったすべてのスタイルをコピーして、* _SystemSytles.css*という接尾辞が付いた新しいシートを作成することでした。2番目のシートを作成し、* _Custom.css*という接尾辞を付けました。次に、元のシートに2つのインポートを配置しました。最初にシステムスタイルをインポートし、次にカスタムスタイルをインポートしました。
特定のレポートでは、独自のスタイル(およびJavaScript)をもたらすカスタムオブジェクトがドロップされます。これは、2番目の質問と同様の手法を利用しています。
ただし、Cognosサイト全体で一般的に使用するJavaScriptをインポートするために私がしなければならなかったことは困難でした。
コアのwebcontentフォルダーに、jQueryとカスタムJavaScriptファイルを含むjsフォルダーを作成しました。次に、一連のJavaScriptファイルに、次のようなコードを含めました。
/************************
JQUERY UTIL INCLUDE
************************/
function loadjscssfile(filename, filetype, id) {
if (filetype == "js") { //if filename is a external JavaScript file
var fileref = document.createElement('script')
fileref.setAttribute("type", "text/javascript")
fileref.setAttribute("src", filename)
if (id)
fileref.setAttribute("OurCompanyNameAsAnID", id)
}
else if (filetype == "css") { //if filename is an external CSS file
var fileref = document.createElement("link")
fileref.setAttribute("rel", "stylesheet")
fileref.setAttribute("type", "text/css")
fileref.setAttribute("href", filename)
}
if (typeof fileref != "undefined") {
var headTag = document.head || document.getElementsByTagName('head')[0];
headTag.appendChild(fileref);
}
}
function _PortalLoadJS() {
if (!window._PortalScriptsLoaded) {
var pathParams = [];
var path = location.href;
(function () {
var e,
r = /([^/]+)[/]?/g,
p = path;
while (e = r.exec(p)) {
pathParams.push(e[1]);
}
})();
var baseURL = location.protocol + '//';
for(var i = 1; i < pathParams.length; i++) {
if(pathParams[i] == 'cgi-bin')
break;
baseURL += pathParams[i] + '/';
}
loadjscssfile(baseURL + "js/jquery-1.6.1.min.js", "js");
loadjscssfile(baseURL + "js/Custom.js?pageType=COGNOS_CONNECTION", "js", "SumTotalUtil");
window._PortalScriptsLoaded = true;
}
}
if(!window.$CustomGlobal) {
window.$CustomGlobal= function(func) {
if (!window.$A) {
if (!window.__CustomExecStack) {
window.__CustomExecStack= new Array();
}
window.__CustomExecStack.push(func);
}
else
$A._executeCustomItem(func);
}
}
try {
// Catch cases where $(document).ready() is called after the
// browser event has already occurred.
if (document.readyState === "complete") {
// Handle it asynchronously to allow scripts the opportunity to delay ready
setTimeout(_PortalLoadJS, 10);
}
// Mozilla, Opera and webkit nightlies currently support this event
if (document.addEventListener) {
// Use the handy event callback
document.addEventListener("DOMContentLoaded", function() { _PortalLoadJS(); }, false);
// A fallback to window.onload, that will always work
window.addEventListener("load", _PortalLoadJS, false);
// If IE event model is used
} else if (document.attachEvent) {
// ensure firing before onload,
// maybe late but safe also for iframes
document.attachEvent("onreadystatechange", function() { _PortalLoadJS(); });
// A fallback to window.onload, that will always work
window.attachEvent("onload", _PortalLoadJS);
}
}
catch (ex) { }
$ Aアイテムは、Custom.jsファイルがロードされたときに作成するアイテムです。
このコードを含めたファイルのリストは次のとおりです(JavaScriptの最後にあります)。
- webcontent \ icd \ bux \ js \ bux \ bux.core.js
- webcontent \ ps \ portal \ js \ cc.js
- webcontent \ rv \ CCognosViewer.js
- webcontent \ rv \ GUtil.js
- webcontent \ rv \ viewer.standalone.core.js
これらのファイルは、Cognos Connection、レポートビューア、およびダッシュボード領域をカバーする必要があります。これ以上見つかった場合はお知らせください。このリストを更新できます。
Custom.jsファイルにリンクするとき、Custom.jsファイルが取得する外部リソースにクエリ文字列を配置します:pageType=COGNOS_CONNECTION。これにより、Cognos Connection、レポートビューア、またはダッシュボードの特定のロードコードを実行できます。
$Aオブジェクトを初期化するCustom.jsクラスのコードは次のとおりです。
function _CustomUtilInit() {
try {
if (!window.$j) {
window.setTimeout(_CustomUtilInit, 1);
return;
}
var jScriptTags = $j('SCRIPT[' + Analytics.SCRIPT_ATTR_NAME + '= ' + Analytics.SCRIPT_ATTR_VALUE + ']');
jScriptTags.each( function(i, scriptElem) {
var tag = $j(scriptElem);
if(tag.attr(Analytics.LOADED_SCRIPT_KEY))
return;
var scriptURL = new URI(tag.attr('src'));
var analyticsPageType = scriptURL.getQueryStringValue(Analytics.PAGE_TYPE_QUERY_KEY, Analytics.PageType.REPORT_VIEWER);
if(!window.$A) {
window.$A = new Analytics();
}
window.$A.init(analyticsPageType);
tag.attr(Analytics.LOADED_SCRIPT_KEY, 'true');
});
} catch (e) {
}
}
_CustomUtilInit();
もちろん、これは、前述の各JavaScriptファイルのCustom.jsファイルの前にjQueryライブラリが含まれていることを前提としています。
URIクラスは、私がインターネットで見つけて、使用するために微調整したものです。カスタムJavaScriptの読み込みについて質問がある場合は、コメントを残してください。もう少し詳しく説明するように最善を尽くします。