SharePoint магазин открыт Q Talk&Сессия четверг 08/13 @ 12:30 PM EDT

Arcovis будет проходить наш второй «SharePoint магазин Talk» сессии в этот четверг на 12:30 PM EDT. Показать с вашими вопросами SharePoint и мы сделаем все возможное, чтобы развлечь вас с банджо шутки, смарт-но безвредны уничижительные наших коллег дискуссии и возможно даже ответ один или два вопроса. На этой неделе «официальной» группа включает ваш действительно, Мои партнеры по Arcovis (Наталья Воскресенская и Гарри Джонс) и Лаура Роджерс (из щебетать & EndUserSharePoint Слава). Боб Фокс угрожали присоединиться к слишком, но я не принимайте это слишком серьезно. Последний раз, Мы имели большой уровень участия аудитории, который размывается грань между эксперты и участники, и я надеюсь, что то же самое произойдет в четверг.

Это мероприятие совместно организуют интегрированных систем и услуг группы (www.issgroup.NET).

Пожалуйста, зарегистрируйтесь здесь: https://www323.livemeeting.com/lrs/8000043750/Registration.aspx?pageName=9xrzxfs9x34sb0sm

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

Увидимся!

</конец>

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

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

Заболевания, существующие ранее: Шаблоны SharePoint оповещения для спасения (?)

Один из моих клиентов, работал с предыдущего подрядчика для строительства, небольшие, но полезные приложения HR для предприятия. Подрядчик используется SharePoint Designer для реализации части рабочего раствора. Это немного беспорядок. К примеру, Существует девять процессов SPD в поддержку единого логического процесса и вплоть до пяти из них могут одновременно огонь в любой момент времени, учитывая условия. It’s not easy to debug 🙂

Мой клиент имеет ряд требований еще выдающийся, одним из которых является обычно предоставляют больше контекста, когда система отправляет оповещения по электронной почте – как в электронной почте, сам, а также формы связанных задач. Как СПД знать разработчику рабочего процесса, действие «сбор данных от пользователя» СПД фактически создает задачу с настраиваемого типа контента. Когда мы используем это действие, Мы не получаем указать многое. Мы можем запрашивать для некоторых значений (Например. «одобрить» или «запретить») и мы можем указать значение жестко в название и описание. Именно об этом.

Требование моего клиента есть два раза:

  1. Когда SharePoint отправляет по электронной почте о назначение задачи, включить много информации о задаче в теле письма.
  2. Что еще более важно, на сегодняшний день – Когда пользователь щелкает ссылку на задачу в электронной почте, форма задачи должны иметь всю информацию, которую утверждающий нуждается в том, чтобы сделать его утвердить или отклонить решение. Прямо сейчас, менеджер должен нажать на ссылку на элемент, чтобы углубиться в основные сведения о и никто не любит. Вам нужно нажать в электронной почте. Затем вам нужно своего рода неясных ссылке на элемент задачи. Затем вы можете посмотреть на базовых данных (в этом случае форма InfoPath). Затем нажмите кнопку back/обратно, и т.д.. Каждый ненавидит его.

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

Подход, который я беру сейчас является создание пользовательского шаблона оповещения. Вы можете прочитать об этом здесь. Как работает поток:

  • СПД рабочий процесс выполняется.
  • В определенный момент, Он назначает задачу менеджера.
  • Система SharePoint автоматически посылает оповещения менеджеру. Это не является частью процесса SPD, а, скорее, «то, что SharePoint делает.» (Служба таймера SharePoint, Я считаю).
  • Пользовательские оповещения обработчик вызывается пользу стандартного процесса оповещения (Магические правила как описано в выше ссылка на статью).
  • Когда мой пользовательский обработчик оповещений выполняет, Он создает красивый электронной почты. Что еще более важно, так как он имеет задачу в руке, Он также украшает фактические задачи всю информацию контекста, необходимых для удовлетворения бизнес-требований.
  • Пользователь получает по электронной почте и она полна полезных контекстной информации.
  • Пользователь щелкает ссылку на задачу и сама задача полна полезной контекстной информации.
  • Все возвращается домой, чтобы арбуз и мороженое.

Я сделал быстрый POC, и она хорошо работает в среде лаборатории. Я получаю мои пользовательские подписка, как ожидалось. Я также получить обновление описание задачи и само название.

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

Выглядит многообещающим, пока...

Великая вещь об этом является, что мне не нужно слоняться с любым из существующих рабочих процессов SPD. Они являются блаженном неведении, что обработчика оповещений»IIZ RUNNIN В ДА BAKGROUND, Н КОНТЕКСТ МОАР WIF TEH ЗАДАЧИ СПИСОК”.

</конец>

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

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

Live SharePoint Q&Сессия четверг 07/30/09 @ 12:30 Окончание вечера EDT 1:30PM EDT

Обновление: Формат для этого в основном конференцию с пару слайды PPT, чтобы установить сцену. У нас на стенде, чтобы огонь вверх, в случае, если это помогает среды SharePoint, но это главным образом люди говорят вслух. Там будет возможности для последующей вверх по электронной почте.

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

Я окончательно получил к нему и в следующий четверг, 07/30, Моя компания (Arcovis) и бизнес-партнер, Группа интегрированных систем и услуг, будет принимать Q&A как. Я надеюсь сделать это, регулярно, как часто как загрузок.

Это первое заседание, вероятно, будет немного неровный, но понятие это:

  • Если у вас есть вопросы, которые вы хотели бы ответил во время сессии, просто показать и спросить.
  • Если хочешь, Вы можете отправить вопрос заранее.

Мы планируем провести в первой половине Q&A на электронной почте вопросы, а затем открыть его до ничего, что кто-нибудь спрашивает после этого.

Сессия проходит в четверг, 07/30 начиная с 12:30 и конец в 1:30 PM EDT.

Если вы заинтересованы, Пожалуйста, зарегистрируйтесь здесь: https://www323.livemeeting.com/lrs/8000043750/Registration.aspx?pageName=pxlsd9fpsm2md7h9

Группа будет включать в себя меня и другие светила SharePoint. You’ll have to sign up to find out who they are 🙂

Если вы хотите быть одним из этих светильников для будущих Q&Сеанс, Позвольте мне знать.

</конец>

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

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

Бирки Technorati:

Вставлять примечания для разработчиков приложений внутри формы InfoPath

Я до сих пор живет в мире формы InfoPath и мне нужно было сделать один из этих «small» изменений в форму,, к сожалению, влезает именования, которое я принял с ним две недели назад. Я подумал, «кто-то будет смотреть на эту вещь в год от теперь и говорю, «То, что думал пол? По Jove, его именования не имеет смысла!”

Я понял, что я мог бы создать представление в форме для этого и затем, Снова, понял, что я мог делать что-то вроде это все вместе. Я добавил представление «Заметки разработчика» в форме InfoPath как таковой:

image

Я настроен форму так, что пользователи не могут получить эту точку зрения и поэтому, он отображается только с клиента InfoPath в режиме конструктора. Теперь я чувствую себя немного привитых против некоторых будущих Неизвестный разработчик, глядя на мою форму и плохие мысли думать обо мне. Тьфу!

</конец>

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

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

Бирки Technorati:

Управление представления InfoPath

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

Я нахожусь в середине фазы InfoPath и я создаю форм InfoPath с большим количеством просмотров. Одна вещь, вы, вероятно, заметите, что InfoPath 2007 клиент показывает вид в алфавитном порядке. Это реальная неприятность несколько раз. Мой лучший метод эти дни является цифру на имя представления, таким образом, чтобы они всегда показывать в порядке, в котором я хочу, как показано здесь:

image

Я желаю что я делал это все вместе.

</конец>

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

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

Бирки Technorati:

Услуги формы 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 метки: ,