5

最近、SDL モジュール Translation Manager を有効にして Tridion 2011 SP1 をインストールしました。

すべてが正常に機能していました。次に、インストール手順に従って、Tridion 2011 Powertools をインストールしました。

GUI をリロードしようとすると (ブラウザーのキャッシュが空になり、WebRoot\Configuration\System.Config のサーバー要素に対してインスタンス化された変更パラメーター)、次の Javascript エラーが発生します。

SCRIPT5007: プロパティ 'getItemType' の値を取得できません: オブジェクトが null または未定義
です Dashboard_v6.1.0.55920.18_.aspx?mode=js、行 528 文字 851

そして、これが関連する JS 行です。

Tridion.TranslationManager.Commands.Save.prototype._isAvailable=function(c,a){var
e=c.getItem(0),f=$models.getItem(e),b=f.getItemType(),d=$ models.getItem(this.getTmUri ())

前の Javascript 行は他の TranslationManager コマンドを扱っているので、一種の TranslationManager コマンドの登録か何かだと思います。

任意のフォルダー/strucutreGroup を選択して Tridion パブリケーションを参照しようとすると、同じエラーが発生し、右側のフレーム (コンテンツ フレーム) には Tridion アイテムが表示されず、次のように表示されます。

読み込んでいます...

誰かがすでに同様の問題を経験していますか?

今のところ、Powertools セクション ファイルをコメント アウトする以外に方法はありません。

Tridion_Home\web\WebUI\WebRoot\Configuration\System.Config

ありがとう、フランソワ

4

3 に答える 3

1

ここで奇妙なのは、Dashboard から呼び出されたり使用されたりすることを意図していない保存コマンドを参照していることです。

おそらくより正確な詳細が表示されるため、JS 縮小 (System.config の JScriptMinifier フィルター) を無効にすることをお勧めします。

もう 1 つの便利な機能は、このエラー コール スタックです。

--

最初の質問から問題を再現できませんでしたが、PT をインストールしたときに次のエラーが発生しました。

PowerTools が定義されていません

*\PowerTools\Editor\PowerTools\Client\Shared\Scripts\ProgressDialog\ProgressDialog.js に表示され、 PowerTools の代わりに PowerToolsBase 名前空間を登録しようます

追加したらビックリする

Type.registerNamespace("PowerTools");

私の場合、TMが含まれているかどうかに関係なく、GUI全体が壊れていたため、ファイルの上部に問題が修正されます。

于 2013-02-19T18:27:22.917 に答える
0

*\PowerTools\Editor\PowerTools\Client\Shared\Scripts\ProgressDialog\ProgressDialog.js を確認しましたが、次の行

Type.registerNamespace("PowerTools");

すでにそこにあったので、ここでは問題ありません。

また、JS の縮小化を無効にしました。エラーが発生する前に UI がロードしている主なメソッドを次に示します。

...
PowerTools.Commands.ItemCommenting.prototype.isValidSelection = function (selection) {
//Use the existing Save command from the CME
return $cme.getCommand("Save")._isEnabled(selection);
}

...

/**
* Executes this command on the selection.
* Override this method to implement the actual functionality.
* @param {Tridion.Core.Selection} selection The current selection.
*/
Tridion.TranslationManager.Commands.SendForTranslation.prototype._execute = function SendForTranslation$_execute(selection)
{
    var selectedItems = selection.getItems();
    if (selectedItems.length == 1)
    {
        var job = $models.getItem(selectedItems[0]);

        if (job)
        {
            if (job.isLoaded())
            {
                job.saveAndSend();
            }
            else
            {
                $log.warn("Unable to send an unloaded job?! {0}".format(job.getId()));
            }
        }
        else
        {
            $log.warn("Unable to execute save-and-send-for-translation for this selection: {0}".format(selectedItems));
        }
    }
    else
    {
        $log.warn("Unable to save-and-send-for-translation multiple items at a time.");
    }
};

...

Tridion.TranslationManager.Commands.Save.prototype._isAvailable = function Save$_isAvailable(selection, pipeline)
{
    var itemUri = selection.getItem(0);
    var item = $models.getItem(itemUri);
    var itemType = item.getItemType();     !!!!!!!!! fails on this line !!!!!! item is null or not an object
    var config = $models.getItem(this.getTmUri());


    if (pipeline)
    {
        pipeline.stop = false;
    }

    if (config && config.hasChanged() && (itemType == $const.ItemType.CATEGORY || itemType == $const.ItemType.FOLDER || itemType == $const.ItemType.STRUCTURE_GROUP || itemType == $const.ItemType.PUBLICATION))
    {
        if (pipeline)
        {
            pipeline.stop = true;
        }

        return true;
    }

    return this.callBase("Tridion.Cme.Command", "_isAvailable", [selection, pipeline]);
};
于 2013-02-20T10:43:55.913 に答える
0

Ok。もう明らかです。

PowerTools.Commands.ItemCommentingは、ダッシュボード ツールバーで使用されます。このコマンドは、Saveを使用してその可用性を確認します。

同時に TM は、「保存」は ItemToolbar でのみ使用されると考えています。

問題の原因となるこのツールバーの違いは、アイテム ビューでは常に 1 つのアイテム (現在開いている) を選択できるのに対し、ダッシュボード ビューでは任意の長さの選択が可能であるということです。

空のダッシュボードを開く選択はまだ行われていません。ItemCommenting は、すべての拡張機能を呼び出す Save を呼び出して、その可用性を確認しようとします。そして、選択が空である限り

var itemUri = selection.getItem(0);

nullを返すだけでなく、

$models.getItem(null)

できることは、tridion powertool trunk editor.config で行われているように、ItemCommenting 拡張コマンドを削除することです。

http://code.google.com/p/tridion-2011-power-tools/source/browse/trunk/PowerTools.Editor/Configuration/editor.config?spec=svn942&r=903 [592]

于 2013-02-20T11:56:49.170 に答える