Це ще один пост в моєму поточної серії про те, як використовувати jQuery з SharePoint.
Якщо ви хочете дізнатися більше про jQuery, Я настійно рекомендую: jQuery в дії Ведмідь Bibeault і Ієгуда Кац.
Одна з перших речей, які я думав, як тільки я почав грати з jQuery, було, чи ми могли б використовувати для забезпечення подання SharePoint. Відповідь "ні" (або, принаймні, Я не стверджую, можна). Однак, Звичайно можна зробити це важко для людей, щоб побачити певного подання.
Я почав з мого пісочницю навколишнього середовища при роботі з цього. Я писав про що навколишнє середовище: Швидкий і простий: Створіть свій власний jQuery пісочниці для SharePoint.
"Забезпечити" подання, виконайте такі дії.:
- Створити подання, щоб забезпечити. Я зробив це і назвав його "Забезпечені видом".
Це, як він виглядає, коли він не "захищений":
- Додати веб-частини редактора вмісту в поданні сторінки за допомогою трюк, описані у статті пісочниці (тобто. Додати "переглядах = спільний&ToolPaneView = 2" за URL-адресою).
- З'ясувати _spUserId вашого SharePoint, виконавши такі божевільні, вірити чи ні:
- Увійти у вашому середовищі SharePoint.
- У полі адреси веб-браузера, тип: "javascript:оповіщення(_spUserId").
- Запис результат (Це "13" в моєму випадку).
- Наступні javascript додати на ваші CEWP у поданні коду:
<скрипт типу ="текст/javascript"
src ="../../JQuery Library/Jquery-1.3.2.min.js">
</сценарій>
<скрипт типу ="текст/javascript">
$(функція() {
оповіщення(_spUserId);
VAR theSecuredView = $(' iframe[FilterLink * = забезпечені % 20View]');
Якщо ((theSecuredView.length > 0) && (_spUserId = = 13))
$(' iframe[FilterLink * = забезпечені % 20View]').батьків().батьків().батьків().HTML("<TR bgcolor = червоний><TD>Немає подання для вас!</TD></TR>");
});
</сценарій>
|
Я включив це попередження(_spUserId) лінія продемонструвати, як це не там дійсно є "забезпечення" подання, але просто робить його більш важким, щоб побачити. Докладніше про це в хвилину.
В основному, jQuery шукає iFrame на сторінці, який має атрибут, який містить "Забезпечені % 20View" в його значення. Після того, як він вважає за, Ми перевірити, якщо поточний користувач є "13". Якщо це, Ми підійти DOM до на <TR> Тег (який я зрозумів, шляхом перегляду джерела і відстеження його) і потім замінити цей тег TR моє повідомлення. Я дійсно не знаю, наскільки надійною це (Я дуже підозріло, Насправді), але вона працювала в моєму пісочниці. Якщо я можу знайти кращого способу, Я блог про це. Це є результатом:
Я натискаю кнопку ОК і дані замінюються великий червоний повідомлення:
Як ви можете сказати, шляху, я вже реалізації цього рішення "безпеки" є дозволити веб-частини, щоб зробити сам. Після того, як вона закінчується, Я перезаписати його зміст з моєї "немає подання для вас!"повідомлення.
Незважаючи на те, що це не дійсно є "забезпечених '" подання, Це потенційно корисний і деякі розумні роботи, Врешті-решт може бути захищеним в більш формальної сенсі. Фундаментальні питання в тому, що клієнт отримує всі дані і потім, тільки після того, як вона отримує дані, Це призводить до видалення його. Якщо клієнт отримує дані, розумний користувач може запобігти працює на всіх jQuery і бачити те, що він/вона хоче бачити.
Є й інші недоліки. Такий підхід «безпека» побудована на базі за _spUserId. Ми хотіли б дійсно безпечною на основі повної модель безпеки SharePoint, або, принаймні, ім'я користувача. Що стає все важче, але я бачу, що деякі хороші речі на цю тему написано, так що я сподіваюся, що є хороший відповідь на цю проблему.
До списку виглядів, самі повинні бути обрізані, Якщо це можливо. Я не пробував, щоб з'ясувати, що. Я припускаю, що це можливо, але дійсно не вирішить проблему фундаментальних безпеки, тому що хтось міг ще тільки Введіть URL-вважає, що вони хочуть (Якби вони знали, що це). Однак, підрізання має сенс. Це функція, хороший юзабіліті і це допомагає затуманити речей. Якщо кінцевий користувач не знає, що існує перегляд подій, вони, ймовірно, не буде намагатися використовувати його. Іноді, Це достатньо.
Якщо пощастить, Я ще писати на цю тему з часом.
</кінець>
Підписатися на мій блог.
Йди за мною на Twitter в http://www.twitter.com/pagalvin