Створення нового типу опитування в microsoft windows sharepoint services 2

вступ

Виникла необхідність в опитуваннях WSS використовувати не тільки текст, а й картинки. Щоб користувачі могли висловлювати свою думку, не тільки прочитавши текст, а й побачивши предмет (предмети) обговорення.

У друкованих матеріалах, присвячених WSS, є статті про те, як додавати нові поля до шаблонів списків. Даний матеріал дуже корисний в тому випадку, коли необхідно створювати списки з уже предзаданного набором полів. Це все добре, але нам необхідно змінити не набір предзаданного полів, а змінити "функціонал" поля. Зробити поле здатним відображати картинку. Стандартних засобів SharePoint я не знайшов, довелося розбиратися, як реалізувати цю потребу іншим способом.

У даній статті опишу своє рішення.

У роботі використовую Microsoft Windows SharePoint Services 2.0 російська редакція. Реліз 6.0.2.5530. Для користувачів, що мають інші локалізації WSS в зазначених нижче шляхах необхідно замінювати тисяча сорок дев'ять на свій lcid. Для англійської версії WSS це тисячі тридцять три.

Перед розвитком теми опишу, як влаштовані списки в WSS.

пристрій списків

Багато речей, описані нижче, відносяться тільки до окремого виду списків - опитування.

Списки існують в двох станах: у вигляді шаблонів і у вигляді реальних списків. Введення інформації відбувається в реальні списки. При створенні списку ми вибираємо шаблон, вказуємо ім'я майбутнього реального списку, задаємо інші характеристики і натискаємо створити. У цей момент, WSS: додає елемент в колекцію SPListCollection, створює віртуальний каталог і створює в ньому aspx файли для роботи зі списком. Далі, у разі створення опитувань, система перенаправляє нас на сторінку створення першого питання. Створивши перше питання, ми переходимо до створення наступного і так далі. За створення і редагування питань опитування відповідають дві aspx сторінки: qstnew.aspx і qstedit.aspx. Усередині цих сторінок формується "начинка" питання. Про це читай нижче.

Всі списки в WSS представлені класом SPList. У цього класу є властивість Fields, через яке можна отримати доступ до колекції полів списку. Поле списку представлено класом SPField. З цього випливає, що стовпці звичайного списку і питання опитування внутрішньо представлені об'єктом одного і того ж класу SPField.

У класі SPField є властивість SchemaXml, значенням якого є xml опис даного поля приблизно такого змісту:

З вище викладеного можна зробити такий висновок: Для того щоб в опитуванні можна було використовувати картинки необхідно розширити XML опис поля, додавши до нього атрибут, який зберігає посилання на картинку і додати всі необхідні обробки цього атрибута. Наприклад, так:

Зміни торкнуться ті сторінки, за допомогою яких створюються, редагуються і відображаються питання. За створення питання відповідає сторінка qstnew.aspx. за редагування qstedit.aspx. а за відображення відповідальність несе шаблон опитування, що зберігається в файлі Schema.xml.

Почнемо вносити зміни в наступному порядку:

  1. Створимо новий шаблон опитування. Це дозволить нам на наступному кроці посилатися на новий вид опитування.
  2. Змінимо файли створення і редагування питань. Це дозволить розширити XML опис поля
  3. Внесемо зміни в файл визначення Schema.xml. Це дозволить побачити роботу нового опитування в дії.

Створення нового шаблону

Наш Графічний опитування - буде дуже схожий на наявний в системі стандартний опитування. Тому новий шаблон створимо на базі наявного шаблону "Опитування" (voting).

  1. Відкриємо файл Local_Drive: \ Program Files \ Common Files \ Microsoft Shared \ Web Server Extensions \ 60 \ TEMPLATE \ тисяча сорок дев'ять \ Site_Template_Name \ XML \ ONET.xml.
  2. Знайдемо елемент ListTemplates
  3. Усередині елемента ListTemplates скопіюємо дочірній елемент, а потім створимо копію в цьому ж елементі ListTemplates.
  4. У копії змінимо значення атрибутів:
    • Name з "voting" на "graphvoting" (Читай примітка нижче)
    • DisplayName з "Опитування" на "Графічний опитування"
    • Type з "102" на "777". (Читай примітка нижче)
    • Значення атрибута Description змініть на свій розсуд.

Створення папки з файлами шаблона

Файли шаблону розташовані в окремій папці. Ім'я папки повинно строго збігатися зі значенням атрибута Name елемента ListTemplate. У нашому випадку це graphvoting. Створимо папку з файлами шаблону. Для цього:

  1. Відкриємо папку Local_Drive: \ Program Files \ Common Files \ Microsoft Shared \ web server extensions \ 60 \ TEMPLATE \ 1049 \ Site_Template_Name \ LISTS
  2. У ній зробимо копію папки Voting. Копії дамо ім'я, що збігається зі значенням атрибута Name в новому елементі ListTemplate. У нашому випадку це ім'я буде graphvoting. У мене вийшло так: Local_Drive: \ Program Files \ Common Files \ Microsoft Shared \ web server extensions \ 60 \ TEMPLATE \ 1049 \ Site_Template_Name \ LISTS \ GRAPHVOTING)
  3. У новій папці відкриємо файл SCHEMA.xml
  4. Змінимо значення атрибутів елемента List таким чином, щоб вони відповідали нашому шаблоном.
  5. Перевіримо правильність внесених змін. Для цього:
    1. збережемо всі відкриті файли
    2. перезапустити WSS
    3. в веб браузері відкриємо сторінку SharePoint
    4. перейдемо в розділ "Створити"

У розділі "Опитування" повинні міститися два елементи: Опитування та Графічний опитування. Якщо це так, значить все зроблено правильно.

При спробі створити "Графічний опитування" буде створено звичайний опитування, з тією лише різницею, що у нового списку номер батька (базового шаблону - BaseTemplate) буде не 102, а 777.

Примітка. Чому я задав значення атрибута Type рівним 777. У вищезазначеної статті є такі рядки:

"Important The Name attribute must be set to the exact name of the new list folder. To identify the list, assign a numerical ID that is not being used elsewhere and that is less than 1000 to the Type attribute."

Виходячи з яких - значення атрибута Type повинно бути унікальним і менше 1000. Чому 777? Просто мені так захотілося J. На початку своїх досліджень замість 777 я використав 1020. У цьому випадку теж працювало, але якщо просять, нехай буде менше 1000.

Зміна файлів створення і редагування опитувань

На початку розділу ще раз зауважу, що обробка опитувань відрізняється від обробки звичайних списків і код відповідальний за це розташовується в інших файлах. За створення питань опитування відповідає файл qstnew.aspx. за редагування - qstedit.aspx. Ці файли розташовані в папці Local_Drive: \ Program Files \ Common Files \ Microsoft Shared \ web server extensions \ 60 \ TEMPLATE \ LAYOUTS \ тисяча сорок дев'ять \

Так як версії WSS можуть не збігатися, і, отже, не збігатися програмний код, перед детальним описом дам загальне словесне опис майбутніх змін.

Наше завдання - в разі використання графічного опитування:

  1. розширити HTML форму настройки питання, додавши в неї поле для введення URL картинки
  2. внести зміни в процедуру підготовки XML схеми перед відправкою службі WSS.

Так як логіка роботи в обох файлах практично однакова почнемо вносити зміни відразу в обидва файли.

Тепер, при використанні графічного опитування буде відображатися додаткове поле для введення (редагування) URL картинки.
  • Остання зміна стосується лише файлу редагування питання qstedit.aspx. Воно пов'язане з отриманням значення URL картинки зі схеми редагованого питання. У тексті знайдемо наступний рядки:

    нижче додамо код з вилучення URL з XML схеми:

    Протестуємо наші доповнення. Для цього:

    Ми прийшли до того, що у нас є новий вид опитування, ми може задавати і редагувати значення додаткового поля PictureURL, але ми не бачимо ніяких картинок в процесі відповіді на опитування. Чому так?

    Вся справа в тому, що форма, яка виводиться на етапі відповіді, не відображує картинку. Щоб виправити цю ситуацію необхідно внести зміни в файл Schema.xml, який визначає всі форми майбутніх графічних опитувань. Як це зробити описано нижче.

    Примітка. можливо, перед виконанням вище описаного тесту доведеться перезапустити служби WSS. Після проведення тесту, створене опитування можна видалити. На наступному етапі ми будемо створювати нові опитування.

    Зміна файлу визначення Shema.xml

    Продовжимо зміна файлу Local_Drive: \ Program Files \ Common Files \ Microsoft Shared \ web server extensions \ 60 \ TEMPLATE \ 1049 \ Site_Template_Name \ LISTS \ GRAPHVOTING \ SCHEMA.xml.

    Перед початком редагування хочу вказати мету. Мета редагування одна: зробити так, щоб користувачі, які відповідають на опитування могли бачити картинку.

    Файл Schema.xml досить об'ємний і щоб полегшити пошук місця редагування скористаємося простим прийомом:

    1. Відкриємо файл Schema.xml
    2. Знайдемо всі входження рядка "Повернутися до опитування". При цьому до кожної знайденої рядку будемо додавати неповторювані номера. До першої знайденої рядку додамо 1, до другої 2 і т.д. У мене вийшло шість входжень.
    3. збережемо схему
    4. Перезапустити службу SharePoint.
    5. Оновимо сторінку нашого опитування (Ctrl + F5)
    6. На оновленій сторінці бачимо напис "Повернутися до опитування" і якийсь номер. У мене вийшов номер 6. Отже, зміни нам необхідно вносити в районі цієї самої "шістки".
    7. Приступимо до редагування файлу схеми
    8. Знайдемо "Повернутися до опросу6".
    9. Нижче знайдемо тег . Усередині елемента ListFormBody і розташовується тіло шаблону сторінки "Відповісти на це опитування".
    10. Далі, замінимо текст, що розташовується між тегами і . на такий вміст:

    У цьому фрагменті ми трохи змінили таблицю, за допомогою якої формується зовнішній вигляд питання. До таблиці ми додали новий осередок, в яку будемо виводити картинку. URL картинки отримаємо з атрибута PictureURL за допомогою елемента Property:

    При цьому будемо визначати, а чи варто взагалі вставляти картинку. Якщо значення атрибута PicrtureURL пусте картинку виводити не будемо. Перевірку виконаємо, скориставшись структурою:

  • Тепер збережемо файл Schema.xml, перезапустити службу SharePoint і оновимо сторінку опитування.
  • Якщо, нижче тексту питання Ви побачили необхідну картинку (див. Початок статті), значить, можете себе привітати, Ви все зробили правильно.
  • Останнім штрихом залишилося ще раз відредагувати файл Schema.xml. Близько рядки "Повернутися до опитування" приберемо раніше додані опорний номера, ще раз перезапустити службу Windows SharePoint Services і можна користуватися новим приємним оку опитуванням.
  • висновок

    У даній статті розглянуто приклад розширення функціональних можливостей Windows SharePoint Services 2.0, показана відкритість і розширюваність даного засобу.

    З повагою, Удалов Максим

    Схожі статті