Архивы по месяцам: Июнь 2009

Услуги формы InfoPath, Аутентификация на основе форм (FBA) и уникальные имена файлов

Я был работает на некоторых форм InfoPath в среде выполнения агента FBA на этой неделе в мох и уроки, Когда я пошел к развертыванию форм в производственной среде с FBA зоны, что имя пользователя() функция не работает. Я использую его для создания уникальных имен файлов.

Колодец, Эта функция не работает в среде выполнения агента FBA (по крайней мере, не из коробки). И, После некоторых размышлений, с помощью имя пользователя в том, что я планировал бы не гарантирует уникальное имя файла в любом случае.

Мое решение было использовать сейчас() Функция и правило, которое срабатывает при загрузке формы. Я назначить имя файла к элементу данных, когда она пуста:

image

image

Преимуществом этого подхода является, что имя файла задается только один раз. (Я не показывать его на снимке экрана, но поставить условие на правило только огонь, когда «myFilename» является пустым). Я использовал, чтобы задать имя файла на уровне источника данных. Обычно, Я хотел бы сделать что-то (Бад) Типа того:

image

Проблема с тем, что, если пользователь открывает форму в понедельник и пользователь Б изменяет его во вторник, Вы закончитесь вверх с двух разных форм, так как два разных пользователей спас его с другим именем пользователя.

Таким образом, как раздражает, как агент FBA может быть в целом и с InfoPath в частности, Это заставило меня переосмыслить небольшой, но очень важные технические детали и подход, что я бы не сделал иначе!

</конец>

Подписаться на мой блог.

Следуй за мной по щебетать на http://www.twitter.com/pagalvin

Бирки Technorati:

Кажется, обеспечение представления библиотеки SharePoint список/документа (вроде) Возможно с jQuery

Это еще один пост в моем продолжается серия как пользоваться jQuery с SharePoint.
Если вы хотите узнать больше о jQuery, Я очень рекомендую: jQuery в действии Медведь Bibeault и Иегуда Кац.

Одна из первых вещей, котор я думал, как только я начал играть примерно с jQuery, был ли мы могли использовать его для обеспечения представления SharePoint. Ответ «нет» (или по крайней мере, Я не утверждаю, что это возможно). Однако, Это конечно возможно сделать его трудным для людей увидеть особое мнение.

Я начал с моей песочнице окружающей среды при работе на этом. Я писал об этой среде: Быстро и легко: Создайте свой собственный jQuery Песочница для SharePoint.

Для «обеспечения» вид, выполните следующие действия:

  1. Создайте представление, которое требуется защитить. Я сделал это и назвал его «Обеспеченных вид».

    Это, как он выглядит, когда она не «защищена»:

    image

  2. Добавьте веб-часть редактора контента на страницу представления, используя трюк, описанный в статье Песочница (т.е.. Добавить «PageView = Shared&ToolPaneView = 2 "в URL-адрес).
  3. Выяснить, ваш SharePoint _spUserId, следуя указаниям сумасшедший, верить или нет:
    1. Войти в вашей среде SharePoint.
    2. В поле адреса веб-браузера, Тип: «javascript:предупреждение(_spUserId»).
    3. Запишите результат (Это «13» в моем случае).

      image

  4. Добавьте следующий яваскрипт для вашего CEWP в представлении «Код»:

    <сценарий типа =«text/javascript"
        src =".. /.. /jQuery Library/jQuery-1.3.2.min.js">
    </сценарий>
    
    <сценарий типа =«text/javascript">
      $(функция() {
    
        предупреждение(_spUserId);
    
        var theSecuredView = $(' iframe[FilterLink * = обеспеченных % 20View]');
    
        Если ((theSecuredView.length > 0) && (_spUserId == 13))
          $(' iframe[FilterLink * = обеспеченных % 20View]').родитель().родитель().родитель().HTML("<TR bgcolor = красный><ТД>Представление не для вас!</ТД></TR>");
      });
    
    </сценарий>
    

Я включил это предупреждение(_spUserId) линия там, чтобы продемонстрировать, как это не действительно «защита» мнение, но просто делает его более трудным увидеть. Подробнее об этом в момент.

В основном, jQuery ищет iFrame на странице, который имеет атрибут, содержащий «Secured % 20View» в его значение. После того, как он считает это, Мы проверяем, чтобы увидеть, если текущий пользователь является «13». Если это, Мы ходим вверх DOM для <TR> Тег (что я понял, просматривая источник и трассировка) и затем заменить этот тег TR с мое сообщение. Я действительно не знаю, как надежные это (Я очень подозрительно, На самом деле), но он работал в моей песочнице. Если я найду способ лучше, Я блоге об этом. Это результат:

image

Я нажмите кнопку ОК и данных заменяется сообщением большой красный:

image

Как вы можете сказать, как я реализовать это решение «безопасность» должна позволить веб-часть для отображения самого. После его завершения, Замените «не моему для вас его содержание!«сообщение.

Несмотря на тот факт, что это не действительно "обеспеченного '» вид, Это потенциально полезных и некоторые умные работы, Это может быть в конечном итоге защищаемый в более формальном смысле. Основная проблема заключается, что клиент получает все данные и затем, только после того, как она получает данные, Он стирает. Если клиент получает данные, умный пользователь может запретить запуск всех jQuery и увидеть, что он хочет видеть.

Существуют другие недостатки. Этот подход «безопасность» основан покинуть _spUserId. Мы хотели бы, чтобы действительно безопасной на основе полной модели безопасности SharePoint, или по крайней мере по имени пользователя. Это становится все труднее, но я вижу некоторые хорошие вещи, написанные на эту тему, так что я надеюсь, что есть хороший ответ на эту проблему.

Список представлений, сами должны быть обрезаны, Если это возможно. Я не пытался выяснить. Я предполагаю, что это возможно, но не решает проблемы основных безопасности потому, что кто-то может еще просто введите URL-адрес представления, которое они хотят (Если они знали, что это). Однако, Обрезка имеет смысл. Это особенность хорошие удобства и помогает замечать вещи. Если конечный пользователь не знает, что существует мнение событие, они, вероятно, не будет пытаться использовать его. Иногда, что является достаточно хорошим.

С удачей, Я буду иметь больше писать на эту тему со временем.

</конец>

Подписаться на мой блог.

Следуй за мной по щебетать на http://www.twitter.com/pagalvin

Бирки Technorati: ,,

del.icio.us метки: ,,

Быстро и легко: Лучший способ использовать jQuery чтобы скрыть текстовое поле в форме SharePoint

Это еще один пост в моем продолжается серия как пользоваться jQuery с SharePoint.
Если вы хотите узнать больше о jQuery, Я очень рекомендую: jQuery в действии Медведь Bibeault и Иегуда Кац.

Ранее, Я писал о том, как использовать jQuery для обнаружения и скрыть текстовое поле в форме. Я не позаботил для конкретного подхода (Я цепочки родителей – это просто не сделали эти дни, по крайней мере в семьях качества).

Когда я впервые начал думать об этом, Я знал, что мне нужно, чтобы найти <TR> к которому я мог бы вызвать скрыть() метод. Мои ранние усилия, чтобы найти правильный <TR> что-то вроде этого:

$(' tr:имеет(вход[Название = скрыть меня!])');

Проблема с этим является, что он будет найти каждый <TR> тег, что любые отношения родителей к скрыть меня! поле, даже если скрыть меня! Это вложенных много уровней глубоко в <TR>в. Получается, что на моей песочнице формы, Это выражение находит 9 различные TR кто скрыть меня! как ребенок где-то в DOM-дереве. Я понял, что я мог бы ходить обратно вверх по дереву, от самого поля ввода, Так вот, как я в конечном итоге злоупотреблении родителей, но он не сидят хорошо со мной.

Я дал некоторые мысли это и одна из вещей, которые я читал наконец имеет смысл: Я мог бы использовать не() метод для обрезки <TR>на что я не хочу в моем упакованного набора. Это привело меня к этому:

$(' tr:имеет(вход[Название = скрыть меня!])').не(' tr:имеет(TR)').скрыть();

Первый бит находит все <TR> Метки, которые имеют скрыть меня! поле нигде в их собственной иерархии. Он затем полоски из любой <TR> Это также у ребенка <TR>. Это оставляет нас с одной <TR> что:

1) Есть нет <TR> дочерние записи

2) Есть поле ввода, как ребенок.

Мы можем затем применить скрыть() метод для результирующего набора, и мы сделали.

Я все еще немного нервной об этом, но не нервной, как цепочки родителей.

Я не знаю, если это лучше, или нет. Там может быть более подходящим способом идентификации только <TR> Мы заботимся о в формы SharePoint. Если вы знаете, Просьба оставить комментарий.

</конец>

Подписаться на мой блог.

Следуй за мной по щебетать на http://www.twitter.com/pagalvin

Бирки Technorati: ,

Быстро и легко: Использовать jQuery, чтобы скрыть текстовое поле в форме SharePoint

Это еще один пост в моем продолжается серия как пользоваться jQuery с SharePoint.
Если вы хотите узнать больше о jQuery, Я очень рекомендую: jQuery в действии Медведь Bibeault и Иегуда Кац.

ОБНОВЛЕНИЕ (уже!): Я думаю, лучший способ найти <TR> тег, я хочу, чтобы скрыть и писал об этом здесь. Вы может по-прежнему найдете эту статью интересно все равно так что я leavnig его вверх.

Я хочу, чтобы скрыть текстовое поле, «Скрыть меня!«как показано:

image

Следующие jQuery делает трюк для меня:

<сценарий типа =«text/javascript">

  $(функция() {


    $(' ввода[Название = скрыть меня!]').родитель().родитель().родитель().скрыть();

  });

</сценарий>

Код говорит:, «найти меня все входные поля название которого = скрыть меня!. Затем, получить его родителей, а затем родителей и * далее * родителей (Фу!) и вызывать скрыть() метод на что вещь, все, что происходит с.

Я понял, что родительской структуры, просмотрев HTML-код для формы, созданный SharePoint, как показано:

<TR>
    <ТД nowrap= "true" VAlign= "Топ" Ширина= «190px" класс= «ms-formlabel»>
        <H3 класс= «ms-standardheader»>
            <nobr>Скрыть меня!</nobr>
        </H3>
    </ТД>

    <ТД VAlign= "Топ" класс= "ms-formbody" Ширина= 400 «пикселей»>
        <!-- FieldName = "скрыть меня!"
                 FieldInternalName = "Hide_x0020_Me_x0021_"
                 FieldType = «SPFieldText"
        -->
        <диапазон dir= «none»>
            <вход
                имя= "ctl00$ m$ g_bdb23c2c_fde7_495f_8676_69714a308d8e$ ctl00$ ctl04$ ctl02$ ctl00$ ctl00$ ctl04$ ctl00$ ctl00$ TextField"
                Тип= "текст"
                MaxLength= "255"
                ID= "ctl00_m_g_bdb23c2c_fde7_495f_8676_69714a308d8e_ctl00_ctl04_ctl02_ctl00_ctl00_ctl04_ctl00_ctl00_TextField"
                название= "Скрыть меня!"
                класс= "ms Лонг" />
                <br>
        </диапазон>


    </ТД>
</TR>

Эта картина показывает то же самое, но размечена с родителями:

image

Первый родитель (1) Это тег span. Промежуток в родительский (2) тег TD и затем, наконец мы получаем в реальных родителей, я хочу, чтобы скрыть (3) который является сам тег TR.

Это довольно страшно подход, который я думаю, потому что это очень зависит от весьма специфические структуры этой формы. Когда SharePoint 2010 выходит, Эта вся структура может изменить и разорвать этот подход. То, что я действительно хочу сделать, это ремесло селектор jQuery, что вдоль линий «найти меня все TR (и только теги TR) что есть где-то в их дочерние элементы поле ввода название которого = скрыть меня!”. Я начиная снизу и перемещение. Предполагая, понять это, Я буду размещать обновленную «быстро и легко ' сообщение.

</конец>

Подписаться на мой блог.

Следуй за мной по щебетать на http://www.twitter.com/pagalvin

del.icio.us метки: ,

Бирки Technorati: ,

Быстро и легко: Создайте свой собственный jQuery Песочница для SharePoint

Это еще один пост в моем продолжается серия как пользоваться jQuery с SharePoint.
Если вы хотите узнать больше о jQuery, Я очень рекомендую: jQuery в действии Медведь Bibeault и Иегуда Кац.

Начало работы с jQuery в SharePoint на удивление легко (Мне). (У меня есть серьезные вопросы по поводу «наилучшей практики» подход к развертыванию этих вещей для производства, но это в другой день). Я только начал играть с этой технологией и с этой целью, Я создал изолированной среды для использования. Если вы ищете, чтобы начать работу с jQuery, Этот подход может оказаться полезной.

1. Создать пустой узел

Создайте пустой сайт где-то на вашем сайте и называют его-то умный как «jQuery Песочница».

2. Скачать jQuery

JQuery javascript библиотеки можно скачать здесь: http://docs.jquery.com/Downloading_jQuery

Чтобы сохранить на рабочем столе.

Я использую версию «уменьшенная».

3. Создание библиотеки документов SharePoint

В вашем сайте Песочница, Создание библиотеки документов.

4. Загрузить jQuery библиотеки SharePoint

Доступ к библиотеке doc, вы только что создали и загрузить библиотеки jQuery.

5. Создание настраиваемого списка

Я начал с настраиваемым списком потому, что я хочу, чтобы слоняться с стандартной формы SharePoint. Можно также создать страницы в библиотеке страниц или страниц веб-частей и, вероятно, много других мест.

Добавьте некоторые столбцы в пользовательский список, так что у вас есть что-то для запуска jQuery против. Мои первоначальные цели были:

  1. Скрыть поля.
  2. Присвоить значение полю.

С учетом этой цели, Я добавил два текстовых поля. Со временем, Я буду играть со ссылками, изображения, Поиск, и т.д..

6. Измените страницы NewForm.aspx веб-частей и добавьте веб-часть редактора содержимого

Это маленький черный magic-ish , в том, что он представляет собой новую концепцию для меня. Я впервые узнал об этом от Пол Гренье, JQuery SharePoint суперзвезда, на своем сайте проект CodePlex: http://spff.codeplex.com/.

Выполните следующие действия для добавления CEWP на ту же страницу, которая показывает NewForm.aspx для любого настраиваемого списка:

  1. Пользовательский список и нажмите кнопку Создать.
  2. Добавьте следующие URL-адреса: Просмотр страницы = Общая&ToolPaneView = 2

Что превратит ваш скучно формы ввода ванили данных от что-то вроде этого:

image

К этому:

image

Добавьте веб-часть редактора контента на страницу.

7. Написать свой первый jQuery код

Открыть этот CEWP в представлении кода и добавьте следующие:

image

Вот реальный код, если вы хотите копировать/вставить:

<сценарий типа =«text/javascript"
    src =".. /.. /jQuery Library/jQuery-1.3.2.min.js">
</сценарий>

<сценарий типа =«text/javascript">
  $(функция() {

    $(«#resultsID»).HTML(«Есть» + $(«»).Размер() + «Метки на этой странице».);

  });
</сценарий>

Результат:
<div id =«resultsID»></Div>
/результат

Обратите внимание, что первый <сценарий> Тег ссылается на фактические jQuery библиотеки. Предположительно, Эти вещи меняются со временем, так что вы хотите, чтобы убедиться, что) Используйте правильное имя и b) направьте его в правильную библиотеку документов SharePoint.

Греться в славе

Если вы сделали это правильно, Вы увидите результат, подобный следующему:

image

Упаковка

Это не единственный способ, чтобы начать работу, но это быстро, легко и изолированы от существующей среды SharePoint.

</конец>

Подписаться на мой блог.

Следуй за мной по щебетать на http://www.twitter.com/pagalvin

Бирки Technorati: ,

del.icio.us метки: ,

Быстро и легко: Использование jQuery, чтобы задать текст значение поля в форме SharePoint

Я начал играть с jQuery вчера. Я, желающих сделать это в течение длительного времени, с тех пор Пол Гренье начал писать его серия о jQuery для конечных пользователей на почтенный www.endusersharepoint.com веб-сайт. Как я использую его, Я надеюсь, добавить должности серии «Быстрый и легкий» как это одно. Эта должность описывается, как задать значение текстового поля для что-нибыдь вы хотите.

В этом случае, Я создал пользовательский список, чьи «новые» формы выглядит, как показано:

image

Это новая форма для настраиваемого списка с название столбца по умолчанию и два списка столбцов (не столбцы сайта; Я не думаю, что он должен сделать разницу).

Цель заключается в том, чтобы назначить произвольное значение в поле, «DefaultMeFieldNoSpaces» (Вы можете сказать, что я немного Трус с «пробелов», что происходит на, но spice оно вверх в конце этой статьи).

Это немного jQuery работал для меня:

<сценарий типа =«text/javascript">

  $(функция() {

    $(' ввода[Название = DefaultMeFieldNoSpaces]').attr(
        {значение: «Вы находитесь в извилистых лабиринт проходов, все так.»});

  });

</сценарий>

Как я понимаю, это немного jQuery говорит:, «найти меня любой ввод тега которого название = DefaultMeFieldNoSpaces. Затем, установить все их значения знаменитая фраза из старой компьютерной игры».

Поскольку там будет только одно поле в форме с названием равным «DefaultMeFieldNoSpaces» мы уверены присвоения значения в это поле и никаких других.

Как насчет поле, имя которого содержит пробелы? Это почти то же самое:

<сценарий типа =«text/javascript">

  $(функция() {
     $(' ввода[Название = назначить поля С пространства]').attr(
        {значение: «Вы находитесь в извилистых лабиринт проходов, все так.»});

  });

</сценарий>

Я думаю, что это довольно безопасный подход, означает, что мы должны быть в состоянии найти поля, что мы хотим и только мы хотим. Если вы посмотрите на HTML SharePoint дает нам, Это своего рода беспорядочна:

<вход
имя= "ctl00$ m$ g_bdb23c2c_fde7_495f_8676_69714a308d8e$ ctl00$ ctl04$ ctl02$ ctl00$ ctl00$ ctl04$ ctl00$ ctl00$ TextField"
Тип= "текст"
MaxLength= "255"
ID= "ctl00_m_g_bdb23c2c_fde7_495f_8676_69714a308d8e_ctl00_ctl04_ctl02_ctl00_ctl00_ctl04_ctl00_ctl00_TextField"
название= "DefaultMeFieldNoSpaces"
класс= "ms Лонг"
/>

«Название» выделяется как узнаваемый и надеемся, что уникальный атрибут помочь нам определить определенный столбец, к которому мы хотим присвоить наши произвольное значение.

Это основополагающие концепции. Настройка поля произвольным образом, как это не собирается выиграть какую-либо награды. Однако, Если мы хотим сделать более интересные формы уровня вещи (все мы всегда хочется сделать, Конечно, сразу после того, как мы закончим, мытье посуды), как изменить значение «поле b» автоматически на основе значения из «поле», Мы (Я) нужно, чтобы узнать эти вещи.

Я думаю, что это наш лучший шанс получить реальный полезное значение здесь через название, по крайней мере для текстовых полей. Там может быть лучше, более надежный подход. Если я нахожу это, Я буду обновлять этот пост. Если вы знаете лучший способ, Пожалуйста, оставьте комментарий.</конец>

</конец>

Подписаться на мой блог.

Следуй за мной по щебетать на http://www.twitter.com/pagalvin

Бирки Technorati: ,