вторник, 20 ноября 2012 г.

Использование стандартных модальных диалогов Sharepoint

В этой статье, касающихся родным модальных диалогов, я попытаюсь показать как использовать их.

1. Color dialog


Можно отобразить следующим кодом:

SP.UI.ModalDialog.showModalDialog({
    url: '/_layouts/morecolors.aspx',
    args: currentColor, // сюда поместите значение для Old color
    dialogReturnValueCallback: function (dialogResult, returnValue) {
        if (dialogResult == SP.UI.DialogResult.OK)
            $get('myDiv').style.backgroundColor = returnValue;
    }
});
И в returnValue после закрытия диалога вы получите значение цвета в виде строки, например '#222222'

2. Upload image to

Чтобы дать пользователю возможность выбрать, в какую библиотеку загружать картинку, можно использовать диалог со следующим url'ом: 
/_layouts/RTEUploadDialog.aspx?LCID=1033&Dialog=UploadImage&UseDivDialog=true
Этот диалог выглядит следующим образом:


Заголовок диалогу, естественно, можно менять произвольным образом. В раскрывающемся списке будут представлены все библиотеки узла. Вернет диалог строку, содержащую html-код, соответствующий тэгу img. 
   <img src="Shared Documents/test.img" alt="test.img" />
Из него легко получить тот же самый Url с помощью простейшей jquery-конструкции: $(returnValue).attr('src').

3. Upload document to

Если заменить в предыдущем примере Dialog=UploadImage на Dialog=UploadDocument, получим аналогичную форму для загрузки документа произвольного типа. 


Возвращаемое значение в этом случае будет иметь опять же вид строки с html-кодом, но на этот раз будет содержать ссылку на файл и img-тэг с картинкой, соответствующей типу файла.
<a href="/Documents/test.doc" /><img class="ms-asset-icon ms-rtePosition-4" src="/layouts/images/iccss.gif" alt="test.doc">test.doc</a> 

4. Text editor

Чтобы проинициализировать значение этого диалога, нужно передать в качестве аргументов объект со свойством value, куда и поместить начальный текст:
options.args = { value: "initial dialog text goes here" };
Диалог вернет текст, введенный пользователем в окно ввода

5. Attachments

Форма /layouts/attachfile.aspx принимает параметры ListId (Guid списка) и ItemId (целочисленный ID элемента списка), и хотя ничего не возвращает, но понять, что вложение было успешно загружено, можно по dialogResult - а выяснять, что именно было загружено, придется уже через Client Object Model. Это, видимо, будет последний файл в соответствующем элементу списка каталоге вложений. Определить каталог вложений довольно просто:
var listItemAttachmentsFolder = list.RootFolder.SubFolders["Attachments"].SubFolders[listItem.ID]; 
Также, ничего не возвращает форма добавления нового элемента списка - тоже неприятно, и опять придется прибегать к помощи Client Object Model, хотя конечно очень хотелось бы получить ID записи в виде возвращаемого значения...

Комментариев нет:

Отправить комментарий