Hivext Community
Февраль 06, 2012, 12:08:48 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Добро пожаловать в сообщество разработчиков Hivext.
 
Wiki   IDE   Console      Начало   Помощь Поиск Войти Регистрация  
Страниц: [1] 2 3 ... 16
  Печать  
Автор Тема: Виджет формы обратной связи  (Прочитано 42909 раз)
Tenshi
Administrator
Full Member
*****

Авторитет: 3
Сообщений: 121



Просмотр профиля
« : Апрель 22, 2009, 12:12:41 »

-------------------------------------------------------
Обновление от 05.09.2009, версия 1.0.3
-------------------------------------------------------

  • Добавлена модерация сообщений (отключаемая). Интеграция произведена так что уже созданные клиенты смогут использовать модерацию без пересоздания.
  • Оптимизирован HTML шаблон и стиль. Теперь можно через шаблон настроить фон и кнопку открытия виджета.

Адрес сервиса (админка): http://code.hivext.ru/applications/feedback/

Дополнение: Коды админки и виджета открыты для использования в любых проектах включая коммерческие. Кроме того можно использовать уже готовые наработки виджета чтобы сделать полностью самостоятельный проект с профессиональным дизайном на отдельном домене. Единственное требование разработка должна вестись на платформе Hivext.

Пример кода встраивания виджета (генерируется админкой)

Код
html4strict:
 
<script src="FeedbackWidget.js" type="text/javascript"></script>
<script type="text/javascript">
   FeedbackWidget("1b733f19391faa29759504f2adc04e4e:764892", { sLang : "ru", nWidth : 600, nHeight : 420 });
</script>

Во втором параметре конструктора FeedbackWidget можно указать следующие параметры (все параметры не обязательные):

sLang - язык виджета (ru, ua, en).
nWidth - ширина виджета.
nHeight - высота виджета.
nSuggestionsOnPage - количество предложений отображаемых на странице ( по умолчанию 5 ).
nCommentsOnPage - количество комментариев отображаемых на странице ( по умолчанию 8 ).
sButtonSide - параметр определяет расположение кнопки открытия виджета при popup размещении. Принимает значения left (по умолчанию) или right.

oInline - встраивание виджета в страницу (боковая кнопка не показывается). Параметр принимает идентификатор (id) дива. Виджет подстраивается под ширину div, а высота меняется автоматически в зависимости от контента. Если параметр указан, параметры nWidth, nHeight и sButtonSide теряют силу.
Демонстрация Inline размещения http://code.hivext.ru/applications/feedback/preview_1_0_3.html?client=d3399dd122438320197f95d174d709ce:379822&inline=dropzone

О виджете
---------------------------------
Стала тут задача написать полезное веб приложение на базе платформы Hivext, после некоторых раздумий пришла идея сделать виджет обратной связи с пользователями чтобы можно было легко прикрутить его на сайт, и отображать всю информацию в интерфейсе виджета без редиректа. Особо горячие парни могут полностью интегрировать виджет в функционал сайта.

Разработка ведется на JavaScript, серверная часть полностью обеспечивается платформой. Это означает что серверная часть вообще не программируется, пишется только клиент на JavaScript (кстати это может быть любой другой клиентский язык ActionScript, Java FX), а часть серверных работ ведется через API Консоль (разметка базы данных, настройка прав доступа).

Итак основные задачи:

  • Простота интеграции виджета
  • Быстрая загрузка и компактный размер скрипта (не более 15 кб)
  • Весь контент отображается в интерфейсе виджета, без редиректов на сторонний сайт
  • Голосование за предложения пользователей

Приложение разбито на две части: Feedback Client - виджет, непосредственно устанавливается на сайт, Feedback Admin - администрирование записей.

Первая версия Feedback Client составит общее представление о том как будет выглядеть виджет и как работать  http://code.hivext.ru/applications/feedback/preview_1_0_5.html?client=4b18ffdb532b118c767208b79c793275:511003

Во-первых, чтобы сократить размер кода виджета решено отказаться от готовых JavaScript клиентов. Используется компактный класс, который и обеспечивает кроссдоменные запросы к сервисам. С классом можно ознакомиться в теме JavaScript - Кроссдоменные запросы к сервисам.

Типичное обращение к методу сервиса из виджета:
Код
javascript:
 
HttpRequest.get("http://api.hivext.ru/1.0/users/authentication/cross/getdevicesignature",
  { appid : sAppid }, function(oResponse) {
  if(oResponse.result == 0) {
     sSession = sDeviceSignature = oResponse.signature;
     GetSuggestion("ORDER BY nScore DESC, id DESC");
  }
});

Во-вторых, виджет активно работает с сервисом Batch чтобы объединять несколько запросов к платформе в один большой запрос - это оптимально как для сервера так и для клиента.

В-третьих, виджет использует мини шаблонизатор, да да строит html прямо на Javascript. Данные приходят в формате JSON (противники формата JSON могут ознакомиться с ним подробнее здесь), скрещиваются с простым шаблоном и преобразуются в html.

Вот пример из кода виджета:

Мини шаблонизатор:
Код
javascript:
 
function XTemplate(sTemplate, oData) {
   var fn = function(t, p) { return (oData[p] != undefined) ? oData[p] : t; }
   return sTemplate.replace(/%\(([A-Za-z0-9_|.]*)\)/g, fn);
}

Шаблон:
Код
javascript:
 
var sSuggestionTemplate =
"<div class='%{sClassName}'><div class='vote-score'>"
+ "<span id='score-%(id)' class='score'>%(nScore)</span>"
+ "<div class='vote-actions'>"
+ "<span><div id='vote-up-%(id)' style='cursor: pointer; display: block; background-color: #00ff00; width: 15px; height: 15px;'></div></span>"
+ "<span><div id='vote-down-%(id)' style='cursor: pointer; display: block; background-color: #ff0000; width: 15px; height: 15px;'></div></span>"
+ "</div>"
+ "</div>"
+ "<div class=''><h3>"
+ "<span class='status'>%(sStatus)</span>"
+ "<a href='javascript:void(0)'>%(sTitle)</a>"
+ "</h3></div>"
+ "<div class='meta'>%(sAuthor)</div>"
+ "<div class='clearfix'></div>"
+ "</div>";

Что из этого получилось опять же можно посмотреть здесь http://code.hivext.ru/applications/feedback/preview_1_0_5.html?client=4b18ffdb532b118c767208b79c793275:511003

Кстати что еще интересно шаблонизатор, кроме вывода html используется для построения пакетного запроса к сервису Batch, не везде, но есть интересные участки кода где так и есть. А вообще лучше изучить исходники, там много интересного.

Понемногу буду постить что добавилось в виджет, чем оброс. Попробую довести его до финального продукта и выложить на публичное растерзание использование.
« Последнее редактирование: Октябрь 31, 2009, 04:00:36 от Tenshi » Записан
Tenshi
Administrator
Full Member
*****

Авторитет: 3
Сообщений: 121



Просмотр профиля
« Ответ #1 : Апрель 26, 2009, 01:11:03 »

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

  • Управление записями всех клиентов через интерфейс админки
  • Создание клиентов для разных сайтов
  • Настройки профиля пользователя

Админка (Feedback Admin) также как и виджет (Feedback Client) реализована полностью на JavaScript.
Промежуточная версия админки: http://code.hivext.ru/applications/feedback/

Интересные особенности реализации админки. Приложение Feedback Admin имеет свой идентификатор appid. Когда пользователь заходит в админку и начинает создавать новый клиент, то если он делает это впервые создается новое приложение со своей базой данных и системными таблицами, после того как идентификатор получен создаются уже таблицы для нового клиента. Если пользователь создает второй клиент, третий и так далее, то используется уже созданный идентификатор, просто в одной и той же БД появляются новые таблицы для каждого клиента. Клиенты идентифицируются составным кодом appid:clientid, где appid - идентификатор приложения которое хранит таблицы и данные всех клиентов, а clientid - идентификатор конкретного клиента. Можно было для каждого клиента создавать отдельное приложение со своей БД и системными таблицами, но это решение не является оптимальным в данном случае.

Кстати коды админки и виджета открыты для использования в любых проектах включая коммерческие.

P.S. Дизайн до конца не доделан, основной упор будет сделан на дизайн виджета.

« Последнее редактирование: Сентябрь 03, 2009, 12:17:08 от Tenshi » Записан
Tenshi
Administrator
Full Member
*****

Авторитет: 3
Сообщений: 121



Просмотр профиля
« Ответ #2 : Апрель 26, 2009, 11:04:05 »

Записан
Tenshi
Administrator
Full Member
*****

Авторитет: 3
Сообщений: 121



Просмотр профиля
« Ответ #3 : Апрель 28, 2009, 05:04:50 »

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

Также в админке в настройках виджета появились опции, с помощью которых можно расширить стилевое оформление виджета без правки исходного кода.
Записан
Tenshi
Administrator
Full Member
*****

Авторитет: 3
Сообщений: 121



Просмотр профиля
« Ответ #4 : Май 18, 2009, 02:24:18 »

У виджета появились дополнительные параметры.

Код встраивания виджета

Код
html4strict:
 
<script src="FeedbackWidget.js" type="text/javascript"></script>
<script type="text/javascript">
   FeedbackWidget("1b733f19391faa29759504f2adc04e4e:764892", { nWidth : 600, nHeight : 420 });
</script>

Во втором параметре конструктора FeedbackWidget можно указать следующие параметры (все параметры не обязательные):

sLang - язык локализации виджета (ru, ua, en).

nWidth - ширина виджета.
nHeight - высота виджета.
nSuggestionsOnPage - количество предложений отображаемых на странице ( по умолчанию 5 ).
nCommentsOnPage - количество комментариев отображаемых на странице ( по умолчанию 8 ).
sButtonSide - параметр определяет расположение кнопки открытия виджета при popup размещении. Принимает значения left (по умолчанию) или right.

oInline - встраивание виджета в страницу. Параметр принимает идентификатор (id) div. Виджет подстраивается под ширину div, а высота меняется автоматически в зависимости от контента. Данное размещение может быть удобно если нужно отобразить виджет на странице контактов. Если параметр указан, параметры nWidth, nHeight и sButtonSide теряют силу, боковая кнопка не показывается.
« Последнее редактирование: Октябрь 31, 2009, 03:42:41 от Tenshi » Записан
Tenshi
Administrator
Full Member
*****

Авторитет: 3
Сообщений: 121



Просмотр профиля
« Ответ #5 : Май 23, 2009, 05:57:14 »

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

Встречаем уникальный по реализации продукт - Виджет формы обратной связи, полностью разработанный на Javascript, где серверную поддержку в полной мере обеспечивает платформа Hivext. Вы пишите только клиент, а платформа использует последние технологические достижения чтобы ваше приложение работало стабильно и быстро!

Адрес финального сервиса: http://code.hivext.ru/applications/feedback/
« Последнее редактирование: Май 25, 2009, 02:31:41 от Tenshi » Записан
enod
Newbie
*

Авторитет: 0
Сообщений: 2


Просмотр профиля
« Ответ #6 : Июнь 02, 2009, 12:18:32 »

Сайт использует кодировку windows-1251. При установке вашего виджета он отлично просматривается во всех браузерах. Но при написании идеи из Internet Explorer'a вместо текста появляются квадратики, при использовании других браузеров всё ок. Есть ли решение?
Записан
Tenshi
Administrator
Full Member
*****

Авторитет: 3
Сообщений: 121



Просмотр профиля
« Ответ #7 : Июнь 02, 2009, 02:04:36 »

Опять IE голову морочит Улыбающийся
Наверное есть, просто не сталкивался с такой багой. Будем править.
Записан
Dmitry
Newbie
*

Авторитет: 0
Сообщений: 1


Просмотр профиля Email
« Ответ #8 : Июнь 02, 2009, 08:11:39 »

Что-то понять не могу. После вставки кода на свою страницу у меня верхняя часть виджета скрывается за границей окна.
На станице предварительного просмотра все нормально работает. В чем глюк?
Записан
enod
Newbie
*

Авторитет: 0
Сообщений: 2


Просмотр профиля
« Ответ #9 : Июнь 02, 2009, 10:03:58 »

Опять IE голову морочит Улыбающийся
Наверное есть, просто не сталкивался с такой багой. Будем править.
Если что сайт использует движок DLE, если нужно будет протестировать, помогу.
Записан
Tenshi
Administrator
Full Member
*****

Авторитет: 3
Сообщений: 121



Просмотр профиля
« Ответ #10 : Июнь 02, 2009, 11:00:21 »

Dmitry а где размещаешь сам код виджета. Размещать нужно сразу после закрывающего тега </body>.
Если не сложно лучше дать ссылку, можно в личку, я посмотрю в чем проблема.

enod ok
Записан
GDie
Newbie
*

Авторитет: 0
Сообщений: 10


Просмотр профиля Email
« Ответ #11 : Июнь 11, 2009, 05:59:51 »

Классный виджет! Спасибо!

Вот только чего действительно в нем не хватает, так это возможности предмодерации идей и комментариев и фильтра матов и ругательств.
Может можно быстро реализовать?
Записан
Tenshi
Administrator
Full Member
*****

Авторитет: 3
Сообщений: 121



Просмотр профиля
« Ответ #12 : Июнь 11, 2009, 10:45:21 »

Да можно будет. Причем ничего обновлять не прийдется, премодерация появится новым пунктом в админке. Премодерация будет на следующей неделе.
Записан
GDie
Newbie
*

Авторитет: 0
Сообщений: 10


Просмотр профиля Email
« Ответ #13 : Июнь 16, 2009, 06:40:43 »

Тут проблемка наметилась у меня для ИЕ6, ИЕ7
пишет следущее: http://clip2net.com/clip/m18384/1245119655-clip-29kb.png
после чего закрывает страницу.
Думаю, что может конфликтовать с остальными явовскими скриптами. Например со счетчиками или аналитиками.
сайт: http://amurturist.info/
Сейчас временно убрал. Если нужно будет вернуть для отладки напишите мне на icq333384401[]gmail.com
Записан
GDie
Newbie
*

Авторитет: 0
Сообщений: 10


Просмотр профиля Email
« Ответ #14 : Июнь 16, 2009, 06:51:27 »

Счетчики вроде не при чем. Поубивал их, а проблема осталась.
Заметил еще одну интересную особенность.
В админке пишет: http://clip2net.com/clip/m18384/1245120405-clip-8kb.png
в то время как на сайте: http://clip2net.com/clip/m18384/1245120504-clip-23kb.jpg
Записан
Страниц: [1] 2 3 ... 16
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.11 | SMF © 2006-2008, Simple Machines LLC | Sitemap Valid XHTML 1.0! Valid CSS!