Регистрация  |  Вход

Глобальные объекты salesforce в JS

Приветствую всех!
Предлагаю в этой теме сделать сборник глобальные переменные в 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 

Dmitry Shnyrev
доступен только если включен header

можно оставить его включенным, а с помощью js скрывать

[quote="Dmitry Shnyrev"]доступен только если включен header[/quote]

можно оставить его включенным, а с помощью js скрывать :)

Да, есть такое, дума про это, но пока не применял.

Да, есть такое, дума про это, но пока не применял. 

Dmitry Kurd
с помощью 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. И могу точно сказать что у них дебильные архитекторы. Если будет не лень в линкед ине выложу статью с анализом и косяков.

wilder
Если будет не лень в линкед ине выложу статью с анализом и косяков.

Вот этого с удовольствием жду!!!

[quote="wilder"]Если будет не лень в линкед ине выложу статью с анализом и косяков.[/quote]
Вот этого с удовольствием жду!!! 

Dmitry Shnyrev
Я тут на днях провел небольшое исследование с inputTextArea richText=true, который подключает на страницу CkEditor с волшебными настройками от самого Salesforce. И при небольшой манипуляциями и получением instance можно использовать КУЧУ внутренних возможностей CkEditor для своих целей. Мы его использовали чтобы "чистить" грязный html от пользователя.
Как-нибудь поделюсь решение.

Можно как нибудь поделиться?

[quote="Dmitry Shnyrev"]Я тут на днях провел небольшое исследование с inputTextArea richText=true, который подключает на страницу CkEditor с волшебными настройками от самого Salesforce. И при небольшой манипуляциями и получением instance можно использовать КУЧУ внутренних возможностей CkEditor для своих целей. Мы его использовали чтобы "чистить" грязный html от пользователя. 
Как-нибудь поделюсь решение.[/quote]
Можно как нибудь поделиться?

ogoblin
Можно как нибудь поделиться?

Да обязательно. Хотел сегодня, почти статью закончил, но мля, нечаянно нажал историю "назад" в браузере и протерял пол статьи. Autosave это все-таки КРУТО! Жаль что об это задумываешься только когда становится поздно. Сегодня уже не допишу, желание пропало второй раз мысли излагать

[quote="ogoblin"]Можно как нибудь поделиться?[/quote]
Да обязательно. Хотел сегодня, почти статью закончил, но мля, нечаянно нажал историю "назад" в браузере и протерял пол статьи. Autosave это все-таки КРУТО! Жаль что об это задумываешься только когда становится поздно. Сегодня уже не допишу, желание пропало второй раз мысли излагать :( 

Все-таки сделал над собой усилие и дописал вторую половину статьи заново.
https://salesforce-developer.ru/html-sanitize-in-salesforce

Все-таки сделал над собой усилие и дописал вторую половину статьи заново.
https://salesforce-developer.ru/html-sanitize-in-salesforce

Dmitry Shnyrev
Все-таки сделал над собой усилие и дописал вторую половину статьи заново.
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. хедера нет - скрипты есть.

О, точно! Давно забытый способ. Пользовался им как-то давно, но подзабыл! Спасибо что напомнил.

О, точно! Давно забытый способ. Пользовался им как-то давно, но подзабыл! Спасибо что напомнил.

Dmitry Shnyrev
ТАДАМ! Кто знал, тем респект, кто не знал, милости прошу пользоваться.

Неожиданное продолжение получиоа эта тема. Если вы используете 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}"/>