Приветствую всех!
Предлагаю в этой теме сделать сборник глобальные переменные в JS, которые создаёт SF, с описанием, чтобы в последующем аккумулировать их в этом сообщении. К примеру:
Объект UserContext - позволяет получить основную информацию о пользователе, не обращаясь в контроллер (например, временную зону, имя пользователя и проч.). Доступен только если включен header.
Поделитесь другими объектами
Приветствую всех! Предлагаю в этой теме сделать сборник глобальные переменные в JS, которые создаёт SF, с описанием, чтобы в последующем аккумулировать их в этом сообщении. К примеру: Объект [b]UserContext[/b] - позволяет получить основную информацию о пользователе, не обращаясь в контроллер (например, временную зону, имя пользователя и проч.). Доступен только если включен header. Поделитесь другими объектами :)
UserContext очень полезный объект (спасибо Wilder подсказал).
Я его использовал для того чтобы получить Date и Datetime format для локали текущего пользователя. В apex эту информацию получить нельзя.
Единственная проблема в том что UserContext доступен только если включен header, а на голых VF страницах увы.
Может кто сталкивался и знает как подключить JS скрипты от Salesforce для чистой VF страницы вручную?
UserContext очень полезный объект (спасибо Wilder подсказал). Я его использовал для того чтобы получить Date и Datetime format для локали текущего пользователя. В apex эту информацию получить нельзя. Единственная проблема в том что UserContext доступен только если включен header, а на голых VF страницах увы. Может кто сталкивался и знает как подключить JS скрипты от Salesforce для чистой VF страницы вручную?
Я тут на днях провел небольшое исследование с inputTextArea richText=true, который подключает на страницу CkEditor с волшебными настройками от самого Salesforce. И при небольшой манипуляциями и получением instance можно использовать КУЧУ внутренних возможностей CkEditor для своих целей. Мы его использовали чтобы "чистить" грязный html от пользователя.
Как-нибудь поделюсь решение. Как оказалось полдня гугления и проб и ошибок код вылился в пару строчек.
Если бы бабки платили как индусам за количество строк кода, то я бы наверное за день заработал бы пару центов
Я тут на днях провел небольшое исследование с inputTextArea richText=true, который подключает на страницу CkEditor с волшебными настройками от самого Salesforce. И при небольшой манипуляциями и получением instance можно использовать КУЧУ внутренних возможностей CkEditor для своих целей. Мы его использовали чтобы "чистить" грязный html от пользователя. Как-нибудь поделюсь решение. Как оказалось полдня гугления и проб и ошибок код вылился в пару строчек. :D Если бы бабки платили как индусам за количество строк кода, то я бы наверное за день заработал бы пару центов :D
можно оставить его включенным, а с помощью js скрывать
[quote="Dmitry Shnyrev"]доступен только если включен header[/quote] можно оставить его включенным, а с помощью js скрывать :)
Да, есть такое, дума про это, но пока не применял.
Да, есть такое, дума про это, но пока не применял.
и js не нужен:
<style type="text/css">
.bPageHeader {
display:none;
}
</style>
стандартные всплывающие хэлп-подсказки тоже не работают без хидера...
так что как говорится: "видишь хидер на странице? а он есть..."
[quote="Dmitry Kurd"]с помощью js скрывать[/quote] и js не нужен: [code]<style type="text/css"> .bPageHeader { display:none; } </style>[/code] стандартные всплывающие хэлп-подсказки тоже не работают без хидера... так что как говорится: "видишь хидер на странице? а он есть..."
На самом деле все просто. Берете любую страницу сохраняете. Смотрите какие есть там JS скрипты. Выбираете потравившиеся, прогоняете через jsbeautifier.org и изучаете. Я например полностью раскалупал Developer console. И могу точно сказать что у них дебильные архитекторы. Если будет не лень в линкед ине выложу статью с анализом и косяков.
На самом деле все просто. Берете любую страницу сохраняете. Смотрите какие есть там JS скрипты. Выбираете потравившиеся, прогоняете через jsbeautifier.org и изучаете. Я например полностью раскалупал Developer console. И могу точно сказать что у них дебильные архитекторы. Если будет не лень в линкед ине выложу статью с анализом и косяков.
Вот этого с удовольствием жду!!!
[quote="wilder"]Если будет не лень в линкед ине выложу статью с анализом и косяков.[/quote] Вот этого с удовольствием жду!!!
Можно как нибудь поделиться?
[quote="Dmitry Shnyrev"]Я тут на днях провел небольшое исследование с inputTextArea richText=true, который подключает на страницу CkEditor с волшебными настройками от самого Salesforce. И при небольшой манипуляциями и получением instance можно использовать КУЧУ внутренних возможностей CkEditor для своих целей. Мы его использовали чтобы "чистить" грязный html от пользователя. Как-нибудь поделюсь решение.[/quote] Можно как нибудь поделиться?
Да обязательно. Хотел сегодня, почти статью закончил, но мля, нечаянно нажал историю "назад" в браузере и протерял пол статьи. Autosave это все-таки КРУТО! Жаль что об это задумываешься только когда становится поздно. Сегодня уже не допишу, желание пропало второй раз мысли излагать
[quote="ogoblin"]Можно как нибудь поделиться?[/quote] Да обязательно. Хотел сегодня, почти статью закончил, но мля, нечаянно нажал историю "назад" в браузере и протерял пол статьи. Autosave это все-таки КРУТО! Жаль что об это задумываешься только когда становится поздно. Сегодня уже не допишу, желание пропало второй раз мысли излагать :(
Все-таки сделал над собой усилие и дописал вторую половину статьи заново.
https://salesforce-developer.ru/html-sanitize-in-salesforce
Все-таки сделал над собой усилие и дописал вторую половину статьи заново. https://salesforce-developer.ru/html-sanitize-in-salesforce
Спасибо.
[quote="Dmitry Shnyrev"]Все-таки сделал над собой усилие и дописал вторую половину статьи заново. https://salesforce-developer.ru/html-sanitize-in-salesforce[/quote] Спасибо.
Товарищи, хочу поделиться с вами интересным открытием, которое сильно упростило мою жизнь.
Есть такой глобальный объект UserContext. Мы его не раз на форуме обсуждали. Но была одна проблема его использовать - он становился доступным и !заполнялненным только если на странице включен header.
Сегодня чисто случайно обнаружил на одной странице что UserContext присутствует и наполнен данными, хотя страница имела явное указание в шапке чтобы отключить все (header, sidebar (хотя он автоматом и так отключается), standardStylesheets).
В итоге поочередного отключения элементов на странице нашелся виновник, который отвечал за появление UserContext на странице - это был простой apex:outputField! И не важно какой поле выводилось, просто он должен присутствовать в исходниках страницы.
ТАДАМ! Кто знал, тем респект, кто не знал, милости прошу пользоваться.
Товарищи, хочу поделиться с вами интересным открытием, которое сильно упростило мою жизнь. Есть такой глобальный объект [b]UserContext[/b]. Мы его не раз на форуме обсуждали. Но была одна проблема его использовать - он становился доступным и [b]!заполнялненным[/b] только если на странице включен header. Сегодня чисто случайно обнаружил на одной странице что UserContext присутствует и наполнен данными, хотя страница имела явное указание в шапке чтобы отключить все (header, sidebar (хотя он автоматом и так отключается), standardStylesheets). В итоге поочередного отключения элементов на странице нашелся виновник, который отвечал за появление UserContext на странице - это был простой [b]apex:outputField[/b]! И не важно какой поле выводилось, просто он должен присутствовать в исходниках страницы. ТАДАМ! Кто знал, тем респект, кто не знал, милости прошу пользоваться. :D
Еще фишка насчет хедера - в странице его включить, но при вызове страницы добавить параметр в урл inline=1. хедера нет - скрипты есть.
Еще фишка насчет хедера - в странице его включить, но при вызове страницы добавить параметр в урл inline=1. хедера нет - скрипты есть.
О, точно! Давно забытый способ. Пользовался им как-то давно, но подзабыл! Спасибо что напомнил.
О, точно! Давно забытый способ. Пользовался им как-то давно, но подзабыл! Спасибо что напомнил.
Неожиданное продолжение получиоа эта тема. Если вы используете standarddController на странице, а потом используете эту страницу в managedPackage, но у вас нет UserContext на странице, готовьтесь получить головную боль с namespace. Salesforce говорит что вы пытаетесь обратиться к полю без селекта.
тут есть 2 решения.
1. Что предложил Дмитрий
2. <apex:variable var="orgName" value="{!OrgSrc__c.Name}"/>
[quote="Dmitry Shnyrev"]ТАДАМ! Кто знал, тем респект, кто не знал, милости прошу пользоваться.[/quote] Неожиданное продолжение получиоа эта тема. Если вы используете standarddController на странице, а потом используете эту страницу в managedPackage, но у вас нет UserContext на странице, готовьтесь получить головную боль с namespace. Salesforce говорит что вы пытаетесь обратиться к полю без селекта. тут есть 2 решения. 1. Что предложил Дмитрий 2. <apex:variable var="orgName" value="{!OrgSrc__c.Name}"/>