Сортировка вложений в Sharepoint

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

6a5241abea4a2e36f443dcb132ea6f2b

Наши юристы ныли-ныли по этому поводу, эти идиоты сканировали документы так, что каждый лист – отдельное вложение, и хуй разберешь где какой лист за каким идет.

Я слегка гугланул, ничо не нашел, потыкался в  SharePoint Designer – там таблицы вложений даже в превью нету, не то что настроек. А времени разбираться не было, поэтому забил хуй на пару-тройку месяцев.

Апосля появилось время, появилась идея – может сортануть вложения в базе? Создал темку на мс форумах Sharepoint Foundation 2010 Sort attachments list in document, только нихуя полезного там мне не ответили, даже в полной версии шарика этой фичи нету, а лазить в базу – нот суппортед бай мс и хуй соси, сам ищи. Мне снова стало некогда, отложил еще на пару месяцев.

А потом пришла мысля – а какого хуя собсно не сортануть через javascript? Данные же есть, таблица есть, остается только найти способ сортировать таблицы через js, а то я нихуя не шарю.

Быстрый гуглеж подогнал во эту статью Sorting Tables with Object Oriented JavaScript QuickSort. В статье приведен готовый код, который реализует сортировку по щелчку по шапке на любой указанной таблице.

Осталось две проблемы: куда собсно засунуть этот код; как, не переписывая чужой говнокод, заставить его работать.

Ну первое решается легко – хуярим код мастерпейдж шарепоинт сайта. v4.master для Sharepoint 2010.

masterpage

Суем жс в общую свалку шаблонов (c:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS\1049\) и живем щаслево.

total

Осталась проблема – шапки у таблицы то у меня (вернее у шарика) нету, но эта хуета решается в полпинка – добавляем ее!

var table = document.getElementById("idAttachmentsTable");
if (!table)
return;
var thead = document.createElement("thead");
var trow = document.createElement("tr");
var column = document.createElement("th");
column.abbr = "link_column";
column.innerHTML = '<a href="#">Имя файла</a>';
table.appendChild(thead);
thead.appendChild(trow);
trow.appendChild(column);

После того как шапку добавили оказывается, что автор TSorter_1.js не писал этот код для меня (вот сука, да?) и его таки пришлось сдецл подрихтовать – текст, по которому надо сортировать, оказался тегом ниже чем у автора.

Пришлось сделать так return  getCell(index).firstChild.firstChild.firstChild.nodeValue;

И еще оказалось что автор немного хуеплет, и сортирует таки по убыванию, а не возрастанию, поэтому пришлось вызвать два раза Table1Sorter.doSort(column); ибо в говнокоде его квиксорта я разбираться не хотел, тем более что квиксорт он тоже у когото спиздил.

Остается хуйнуть весь этот код в <body scroll=”no” onload= и заебок, а то window.onload не зороботоло, видимо какие-то неинтересные хуеплетские детали жаваскрипта, хуй с ним.

designer

 

sorted!

Файлик TSorter_1.js

Advertisements
This entry was posted in Программерское and tagged . Bookmark the permalink.

10 Responses to Сортировка вложений в Sharepoint

  1. Konstantin says:

    Привет. Есть идеи сортировки по дате добавления? Грубо говоря сортировку то можно таким же как и ты методом сделать, но вот как к каждому вложению дату приписать

    • sopholos says:

      Так онож и так по дате добавления по дефульту?
      А если надо в обратную сторону – инвертировать порядок думаю не сложно будет по щелчку, вместо сортировки.

  2. Konstantin says:

    ТАкс…проверяю ещё раз. сегодня уже проверял. Как-то в разнобой….у меня WSS 3.0.

  3. Konstantin says:

    вообще по алфавиту…сейчас только что добавил вложение в один из наших списков.

  4. Ksu says:

    Файлик TSorter_1.js недоступен :(

  5. Ksu says:

    Спасибо! А как можно так же сортировать вложения, например, новостей, которые отображаются не в таблице (как на примере выше, а просто на обычной странице), если это возможно?

    • sopholos says:

      Не заморачивался, но там наверняка ведь тоже таблица. Погляди например фаербагом чего там генерируется.

  6. Ksu says:

    К сожалению, там не таблица, а просто несколько div’ов – для каждого вложения свой:

    Новость 333

    10 марта 2011

    бла бла бла

    1.png

    15.png

    2.png

    IMG_17042013_194627.png

    IMG_19042013_115543.png

    Любые идеи – welcome :)

    • sopholos says:

      Набор div ничем по сути не отличается от набора tr. Только названием тегов контейнера. Сортировать дивы задача того-же порядка что и строки таблицы.
      1) Надо аналогично добавить еще какойто тег (например тот же див) как th в случае с таблицей, клик по которому будет приводить к сортировке.
      2) Остается найти контейнер в котором лежат нужные дивы, переписать в сортировке немного логику вместо поиска колонки и строк в ней – на поиск дивов.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s