2012-07-01 1 views
4

Я работаю специально с расширениями PowerTools для Tridion 2011, но это относится к любому расширению Anguilla с кнопками на панели инструментов.Можно ли показать другую подсказку, когда кнопка панели инструментов отключена?

Мы можем установить <ext:title>, чтобы получить всплывающую подсказку. Пользователь нажимает на кнопку расширения GUI, чтобы увидеть этот текст. См. Пример для расширения «count items» в config.

<ext:extension assignid="CountItems" name="Count Items" 
       pageid="Power Tools" groupid="Tools"> 
    <ext:command>PT_CountItems</ext:command> 
    <ext:title>Count Items</ext:title> 
    <ext:issmallbutton>false</ext:issmallbutton> 
    <ext:dependencies> 
     <cfg:dependency>PowerTools.Commands</cfg:dependency> 
    </ext:dependencies> 
    <ext:apply> 
     <ext:view name="DashboardView" /> 
    </ext:apply> 
</ext:extension> 

У нас есть запрос на change this tooltip to some helpful text, когда расширение не включен.

Я вижу текст «Количество элементов» внутри кнопки с консолью Chrome.

<div id="CountItems" class="tridion button PT_CountItems ribbonitem disabled" 
    title="Count Items" c:command="PT_CountItems" 
    c:controltype="Tridion.Controls.RibbonButton" 
    style="-webkit-user-select: none; "> 
    <div class="image">&nbsp;</div> 
    <div class="text">Count Items</div> 
</div> 

Кроме того, в консоли, я могу выбрать ДИВ окружающий текст: $("div#CountItems > div.text"). Я не уверен, как получить текст.

Вопрос: Как изменить/изменить текст всплывающей подсказки при неактивности кнопки GUI?

Возможно, мне также необходимо разъяснить их.

  • В Ангилье (или PowerTools), является $() такой же, как jQuery()? Я попробовал $("div#CountItems > div.text").text() и получил Object #<HTMLDivElement> has no method 'text'
  • Есть ли предпочтительный или настраиваемый способ установки этой всплывающей подсказки, когда кнопка отключена? Я уверен, что мы можем найти элемент в DOM, но мне, вероятно, что-то не хватает.

И, наконец,

  • Would {NameSpace}.Commands.{ExtensionName}.prototype.isValidSelection = function(selection) { } быть в нужном месте, чтобы изменить эту подсказку в целом?
  • Для контекстных меню, я считаю, что у нас есть _isAvailable.
+0

Возможно, вы можете расширить существующие команды и вызвать их методы «_isAvailable» или «_EESET», проверить, вернули ли они false, а затем изменить всплывающую подсказку? –

+0

Спасибо, основанный на обратной связи @Nuno annd @ Frank, я должен был установить всплывающую подсказку с помощью '$ controls.getControl ($ (" # CountItems ")," Tridion.Controls.Button "). SetTooltip (" Count Item is ... ");' который работает в 'PowerTools.Commands.CountItems.prototype.isValidSelection = function (selection) {}'. –

+0

@Frank также упомянул автономный вариант создания прослушивателя событий с чем-то вроде '$ evt.addEventListener (« onitemselected », function (selected) {PowerTools.Button1.setTooltip (...); PowerTools.Command1._isItEnabled = .. .;}); '. Я должен буду попробовать это дальше. –

ответ

6

Является ли $() таким же, как jQuery()?

№ Пользовательский интерфейс Tridion включает в себя подмножество библиотеки jQuery: sizzle CSS selector engine.

Так что все обычные трюки jQuery для выбора набора элементов будут работать, но другие методы jQuery (материал AJAX, обработчики событий, утилиты) будут доступны , а не.

Обратите внимание, что если вы хотите использовать полный jQuery в своем расширении, вы можете сделать это, включив его в так называемый noConflict mode.

Могу ли я установить всплывающую подсказку, если кнопка отключена?

Насколько я знаю, кнопки в графическом интерфейсе Tridion имеют только одну всплывающую подсказку и эта всплывающая подсказка отображается для каждого состояния кнопки. Также нет события ontooltip, в которое вы можете подключиться, чтобы рассчитать всплывающую подсказку, когда графический интерфейс вот-вот отобразит его.

Кнопки имеют общедоступный setTooltip, поэтому вы можете изменить его самостоятельно, как только обнаружите определенное состояние.Если вы ищете исходный код Ангильи для setTooltip, вы найдете несколько примеров того, как это используется (на экране приветствия при добавлении компонентных презентаций на страницу и в средстве просмотра BluePrint).

Is isValidSelection верное место, чтобы изменить эту подсказку?

Вместо того, чтобы спрашивать «могу ли я изменить всплывающую подсказку, когда она отображается?», Попробуйте перефразировать ее до «какое состояние приводит к какой подсказке? Могу ли я обнаружить изменение состояния и установить правильную подсказку в это время?».

Если ваш инструмент/команда активирована только при выборе элементов определенного типа, вы должны обнаружить это условие, а затем установить всплывающую подсказку в это время. Затем, когда GUI должен отображать подсказку, вам не придется ничего делать.

Конечно, это просто подталкивает вас к проблеме где-то еще: как обнаружить это или это условие. Но вы обнаружите, что часто бывает проще найти событие для таких «изменений состояния приложения», чем для «ontooltip».