Лучше всего было бы создать отдельный набор кнопок, так как он меньше перенаправляет...
Если вы действительно хотите переопределить стандартные, я думаю, вам придется использовать обычные переопределения (на всех кнопках), но с контентом, основанным на Javascript, вы будете решать, что должно произойти.
http://www.salesforce.com/us/developer/docs/api_console/index.htm — Консольный JS API будет удобен.
Создайте страницу Visualforce, которая использует standardController="Your_Object__c"
. В содержание включить ссылку на Console API и код, аналогичный этому примеру isInConsole()
:
<apex:includeScript value="/support/console/27.0/integration.js"/>
<script type="text/javascript">
function testIsInConsole() {
if (sforce.console.isInConsole()) {
alert("in console");
} else {
alert("not in console");
}
}
</script>
За исключением того, что вы будете перенаправлять либо на свои специальные страницы, либо на стандартные «новые» и «редактировать». Чтобы принудительно перейти в исходный режим редактирования, вы можете добавить параметр nooverride=1
в URL-адрес (который также упоминается в документации URLFOR
).
Обычная «новая учетная запись» (приводит к переопределению, если указано): /001/e
Принудительно перейти на вашу страницу: /apex/NewAccount
Принудительно перейти на стандартную страницу: /001/e?nooverride=1
Итак, теперь у вас есть идея, как определить, находитесь ли вы в консоли или нет, и куда идти. Единственный оставшийся вопрос: «какое окно должно перенаправляться». Поскольку консоль построена на фреймах, вы можете получить разные результаты при использовании окна javascript, местоположения, родительских и т. д. объектов. Это общие сведения о том, как работать с фреймами в JS, поэтому я не буду это описывать. Но я включу ссылку на srcUp()
, предоставляемая отделом продаж, которую вы, возможно, захотите использовать повторно.
Честно говоря, я думаю, что это определено только в контексте консоли, так что, может быть, вы могли бы отказаться от всего isInConsole
в пользу typeof srcUp != 'undefined'
?
Удачи :)
person
eyescream
schedule
05.06.2013