2012-10-18 8 views
8

Stworzyłem nowy edytor dla SDL Tridion, który dodaje nowe funkcje do paska wstążki. Jest to możliwe poprzez dodanie następującego fragmentu do editor.configJak skonfigurować rozszerzenie SDL Tridion CME dla podzbioru widoków?

<!-- ItemCommenting PowerTool --> 
    <ext:extension assignid="ItemCommenting" name="Save and&lt;br/&gt;Comment" pageid="HomePage" groupid="ManageGroup" insertbefore="SaveCloseBtn"> 
     <ext:command>PT_ItemCommenting</ext:command> 
     <ext:title>Save and Comment</ext:title> 
     <ext:issmallbutton>false</ext:issmallbutton> 
     <ext:dependencies> 
     <cfg:dependency>PowerTools.Commands</cfg:dependency> 
     </ext:dependencies> 
     <ext:apply> 
     <ext:view name="*" /> 
     </ext:apply> 
    </ext:extension> 

ta jest stosowana do wszystkich widoków za pomocą wartości wieloznaczny w węźle. Doprowadziło to do dodania mojego nowego przycisku do wstążki każdego widoku, w tym do głównego pulpitu nawigacyjnego. Czy istnieje sposób dodania tego do wszystkich widoków z wyjątkiem pulpitu? Czy muszę stworzyć coś takiego?

<ext:apply> 
     <ext:view name="PageView" /> 
     <ext:view name="ComponentView" /> 
     <ext:view name="SchemaView" /> 
    </ext:apply> 

Jeśli jest to jedyny sposób uzyskania pożądanego wyniku, czy istnieje lista wszystkich nazw widoku?

Odpowiedz

8

Rozwiązanie dostarczone przez Jaime nie zadziała, ponieważ:

  • Ribbon Toolbar ukryje przycisków tylko na karcie Tworzenie jeśli isAvailable metoda odpowiedniego polecenia zwróci false.
  • Większość przycisków w RibbonToolbar implementuje określony interfejs Tridion.Controls.RibbonButton. Oznacza to, że gdy spróbujesz uzyskać , aby uzyskać kontrolę Tridion.Controls.Button dla tego samego elementu - uzyskasz całkowicie inną kontrolę, opartą na tym samym elemencie HTML. Tak więc RibbonToolbar nie będzie o tym wiedział, a będzie działał niepoprawnie.
  • Jeśli chcesz ukryć przycisk na wstążce RibbonToolbar, powinieneś użyć publicznych metod na wstążkach RibbonToolbar i RibbonPage. W ten sposób będzie poprawnie obsługiwany przez RibbonToolbar. Przykład:
var toolbar = $controls.getControl($("#ItemToolbar"), "Tridion.Controls.RibbonToolbar"); 
var page = toolbar.getPageById("HomePage"); 
page.hideItem(buttonId); 
page.showItem(buttonId); 

chodzi o oryginalne pytanie, tutaj jest dość prosty i najprostszym rozwiązaniem:

<ext:add> 
    <ext:extension assignid="ItemCommenting" name="Save and&lt;br/&gt;Comment" pageid="HomePage" groupid="ManageGroup" insertbefore="SaveCloseBtn"> 
     <ext:command>PT_ItemCommenting</ext:command> 
     <ext:title>Save and Comment</ext:title> 
     <ext:issmallbutton>false</ext:issmallbutton> 
     <ext:dependencies> 
      <cfg:dependency>PowerTools.Commands</cfg:dependency> 
     </ext:dependencies> 
     <ext:apply> 
      <ext:view name="*" /> 
     </ext:apply> 
    </ext:extension> 
</ext:add> 
<ext:remove> 
    <ext:extension id="ItemCommenting"> 
     <ext:apply> 
      <ext:view name="DashboardView" /> 
     </ext:apply> 
    </ext:extension> 
</ext:remove> 
+0

Bardzo ładny Borys. Dobrze wiedzieć, że jest to możliwe ... Byłoby miło mieć odniesienie do tego, co można zrobić w pliku konfiguracyjnym, więc jeśli masz coś, co możesz udostępnić, byłoby świetnie. –

+0

Niestety wszystko jest w moim umyśle :) –

+0

Czy można używać dla pola out of box, takiego jak Underscore? –

2

Z tego co wiem, musisz podać wszystkie widoki lub użyć symbolu wieloznacznego. Byłoby miło, gdyby funkcja isAvailable działała dla przycisków paska narzędzi Wstążki, prawda? Oznacza to, że jeśli polecenie zwróci wartość false w metodzie _isAvailable, przycisk nie wyświetli ...

Cóż, znalazłem pracę. Można zrobić coś takiego w swoim sposobie isavailable w poleceniu:

Your.Namespace.PT_ItemCommenting.prototype._isAvailable = function PT_ItemCommenting$_isAvailable(selection) { 
    var isAvailable = $display.getView().getId()!='DashboardView'; 
    if(isAvailable){ 
     return true; 
    } 
    var button = $controls.getControl($("#ItemCommenting"), "Tridion.Controls.Button"); 
    button.hide(); 
    return false; 
}; 

myślę, że to jest rzeczywiście dobra praktyka, ponieważ będzie to „ukryć” poleceń czy nie powinny one być dostępne, prawda?

Daj mi znać, jak to działa.

+0

Kocham go, gdy obejście jest razem –

Powiązane problemy