Помощь для начала

Форум по созданию и наполнению документации к платформе Абрикос

Модераторы: Mansur, radiolok

Помощь для начала

Сообщение mdErrDX5341 » 27 апр 2012, 18:47

Как пользоваться p_form1 вообще луюбой формой обратной связи, плохо что документации нет(((((((
mdErrDX5341
 
Сообщения: 13
Зарегистрирован: 27 апр 2012, 18:45

Re: Помощь для начала

Сообщение mdErrDX5341 » 27 апр 2012, 18:58

Есть небольшой хелп в папке с модулем, но только есть проблема, при добавлении pub_button cms, пишет что такого файла нет
mdErrDX5341
 
Сообщения: 13
Зарегистрирован: 27 апр 2012, 18:45

Re: Помощь для начала

Сообщение roosit » 29 апр 2012, 19:02

Допустим, вам необходимо вставить блок "Прямой эфир" на всех страницах сайта, т.е. вставить его в файл шаблона main.html
Кирпич "Прямой эфир" находиться в blog/brick/commentlive.html
В шаблоне main.html в части описание шаблона (между блоками <!--[*]...[*]-->) добавляем запрос [mod=blog]commentlive[/mod], а уже в теле самого шаблона указываем место, куда этот кирпич при сборке страницы будет вставлен конструкцией [mod]blog:commentlive[/mod]
Если необходимо вставить на страницу несколько кирпичей из одного модуля, то в описании шаблона необходимо перечислить через запятую, например [mod=blog]lasttopic,commentlive,catblock,tagblock[/mod]

Допустим, кирпич вы вставили в шаблон, но он вам не подходит, так как нужно сделать некоторые правки в нем. Базовый кирпич, который находится в модуле, править нельзя, потому что в очередном обновлении модуля он будет переписан.
Для того, чтобы решить это, необходимо перегрузить кирпич в шаблоне.
Для этого, в шаблоне создаем папку override и в ней создаем папку с названием модуля, например blog и в ней создаем папку brick и копируем в нее из модуля необходимый кирпич. Теперь можно смело править этот кирпич, при сборке страницы будет использован именно он.
Планета задач - управляйте задачами и проектами легко.
Govorim.org - развиваем СПО в России, присоединяйтесь.
Twitter - мой твиттер. Все из жизни платформы и не только.
Аватара пользователя
roosit
Администратор
 
Сообщения: 144
Зарегистрирован: 02 авг 2011, 16:21
Откуда: Казань

Re: Помощь для начала

Сообщение mdErrDX5341 » 02 май 2012, 19:34

Спасибо за развернутый ответ, в будущем очень пригодится, если захочу изменять модули.
Но меня интересует именно модуль feedback, в папке brick этого модуля есть файлы columnblock.html, js_data.html, p_form1.html(таких 3 файла), так же там есть файл modules/feedback/content/help.html, если делать по нему, не чего не получается.
mdErrDX5341
 
Сообщения: 13
Зарегистрирован: 27 апр 2012, 18:45

Re: Помощь для начала

Сообщение Mansur » 02 май 2012, 20:56

mdErrDX5341 писал(а):... так же там есть файл modules/feedback/content/help.html, если делать по нему, не чего не получается.

Спасибо за ваше сообщение. Модуль feedback претерпел некоторые изменения за последнее время, а файл help.html не был приведен в соответствие с этими изменениями. Обязательно исправим.
Решение:
В шаблоне при объявлении в соответствии с изменениями нужно заменить
Код: Выделить всё
<!--[*]
...
[mod=feedback]pub_button[/mod]
...
[*]-->

на
Код: Выделить всё
<!--[*]
...
[mod=feedback]columnblock[/mod]
...
[*]-->

А при вызове заменить
Код: Выделить всё
<p>
   Например: [mod]feedback:pub_button[/mod]   
</p>

на
Код: Выделить всё
<p>
   Например:[mod]feedback:columnblock[/mod]
</p>
Mansur
 
Сообщения: 5
Зарегистрирован: 28 мар 2012, 03:23
Откуда: Россия

Re: Помощь для начала

Сообщение roosit » 02 май 2012, 21:01

Действительно, хелп устарел, доберусь в ближайшее время, поправлю.

Вот еще примеры, более технические, для тонкой настройки.

Итак, можно настроить любую форму для отправки обратной связи.

Пример 1. Как вызвать форму.
Размещаем в шаблоне кнопку:
Код: Выделить всё
<a href="#" onclick="showFeedbackPanel(); return false;">Отправьте нам</a>


Объявляем JS функцию кнопки в шаблоне:
Код: Выделить всё
<script language='JavaScript' type='text/javascript' charset='utf-8'>
   function showFeedbackPanel(){
      Brick.ff('sys', 'wait', function(){ // подгрузить компонент wait.js из модуля sys
         var Dom = YAHOO.util.Dom;
         var lw = new Brick.widget.LayWait('feedback-columnblock'); // отобразить окно wait поверх элемента feedback-columnblock
         Brick.ff('feedback', 'api', function(){ // подгрузить компонент api.js из модуля feedback
            lw.hide();
            Brick.mod.feedback.API.showNewMessagePanel(); // Открыть модальное окно стандартной обратной формы
         });
      });
      return false;
   };
</script>


Теперь по клику выйдет форма.

Пример №2. Создаем свою форму обратной связи.
Рисуем форму:
Код: Выделить всё
<form id="feedback_static_form" class="field" style="width: 525px">

   <p>Поля, отмеченные <span class="red">*</span> - обязательны для заполнения.</p>

   <table class="fiedls" style="width:520px;"><tbody>
      <tr>
         <td><label>Фамилия</label> <label class="red">*</label></td>
         <td><input type="text" id="txt-feedback-fam" style="width: 300px" /></td>
      </tr>
      <tr>
         <td><label>Имя</label> <label class="red">*</label></td>
         <td><input type="text" id="txt-feedback-im" style="width: 300px" /></td>
      </tr>
      <tr>
         <td><label>Отчество</label> <label class="red">*</label></td>
         <td><input type="text" id="txt-feedback-otch" style="width: 300px" /></td>
      </tr>
      <tr>
         <td><label>Почтовый адрес</label> <label class="red">*</label></td>
         <td><input type="text" id="txt-feedback-adress" style="width: 300px" /></td>
      </tr>
      <tr>
         <td><label>Место работы или учебы&nbsp;</label></td>
         <td><input type="text" id="txt-feedback-work" style="width: 300px" /></td>
      </tr>
      <tr>
         <td><label>Контактный телефон</label></td>
         <td><input type="text" id="txt-feedback-phone" style="width: 300px" /></td>
      </tr>
      <tr>
         <td><label>Электронная почта</label></td>
         <td><input type="text" id="txt-feedback-email" value="" style="width: 300px" /></td>
      </tr>
   </tbody></table>
   
   <label>Ваш вопрос</label> <label class="red">*</label><br />
   <textarea id="txt-feedback-msg" style="width: 500px; height: 200px"></textarea>
   
   <p>
      <label for="chk-feedback-email">
         Я хочу получить ответ по электронной почте <input id="txt-feedback-chemail" type="checkbox" checked="checked" />
      </label>
      <br />
      <label for="chk-feedback-publish">
         Я не против, чтобы мой вопрос был опубликован <input id="txt-feedback-chpub" checked="checked" type="checkbox" />
      </label>
   </p>
   
   <div class="buttons center send-button">
      <input class="btn-send" onclick="feedBackSendMessage(); return false;" type="button" value="Отправить" class="btn" />
   </div>
</form>


Далее JS скриптом читаем форму и отправляем ее ajax запросом на сервер:

Код: Выделить всё
<script language='JavaScript' type='text/javascript' charset='utf-8'>

function feedBackSendMessage(){
   var gel = function(id){return document.getElementById('txt-feedback-'+id);};
   var getval = function(id){return gel(id).value;};
   var getvalch = function(id){return (gel(id)['checked'] ? 'Да' : 'Нет');}
   var err = function(id, label){
      if (getval(id).length < 1){
         alert('Вы не заполнили обязательное поле: "'+label+'"');
         try{gel(id).focus();}catch(ex){};
         return true;
      }
      return false;
   };
   if (
         err('fam', 'Фамилия') ||
         err('im', 'Имя') ||
         err('otch', 'Отчество') ||
         err('adress', 'Почтовый адрес') ||
         err('msg', 'Ваш вопрос')
      ){
      return;
   }

   var fio = getval('fam')+' '+getval('im')+' '+getval('otch');
   var msg = '';
   msg += 'Обращение в Интернет-приемную\n';
   msg += 'ФИО: '+fio+'\n';
   msg += 'Почтовый адрес: '+getval('adress')+'\n';
   msg += 'Место работы/учебы: '+getval('work')+'\n';
   msg += 'Электронная почта: '+getval('email')+'\n';
   msg += '\n';
   msg += 'Получить ответ по email: '+getvalch('chemail')+'\n';
   msg += 'Опубликовать вопрос: '+getvalch('chpub')+'\n';
   msg += '\n';
   msg += 'Текст вопроса:\n';
   msg += getval('msg');

   Brick.ff('sys', 'wait', function() {
      var Dom = YAHOO.util.Dom;
      
      Dom.getElementsBy(function(el){
         el.disabled = "disabled";
      }, '', 'feedback_static_form');

      var lw = new Brick.widget.LayWait('feedback_static_form');
      Brick.ff('feedback', 'form', function() {
         Brick.mod.feedback.NewMessageElement.send({
            'data': {
               'fio': fio,
               'phone': getval('phone'),
               'email': getval('email'),
               'message': msg
            }
         }, function(){
            lw.hide();
            alert('Ваше сообщение успешно отправлено');
         });
      });
   });
};

</script>
Планета задач - управляйте задачами и проектами легко.
Govorim.org - развиваем СПО в России, присоединяйтесь.
Twitter - мой твиттер. Все из жизни платформы и не только.
Аватара пользователя
roosit
Администратор
 
Сообщения: 144
Зарегистрирован: 02 авг 2011, 16:21
Откуда: Казань

Re: Помощь для начала

Сообщение mdErrDX5341 » 02 май 2012, 22:04

Огромное спасибо))), за развернутый и быстрый ответ.
mdErrDX5341
 
Сообщения: 13
Зарегистрирован: 27 апр 2012, 18:45


Вернуться в Документация

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron