Выпущена система управления сайтом HostCMS v. 3.2.3

Реестр основных изменений:

Порядок обновления:

Получить бесплатную версию системы управления сайтом HostCMS.Free v. 3.2.3 Вы можете здесь.

При возникновении вопросов обращайтесь в службу поддержки по эл.почте. 

Для использования CAPTCHA в формах необходимо доработать XSL шаблоны форм:

<?xml version= «1.0» encoding= «windows-1251»?>
<!DOCTYPE xsl:stylesheet>
<xsl:stylesheet version= «1.0» xmlns:xsl= «http://www.w3.org/1999/XSL/Transform»>
<xsl:output indent= «yes» encoding= «windows-1251»/>

<xsl:template match= «/»>
    <xsl:apply-templates/>
</xsl:template>

<xsl:template match= «/document»>

<SCRIPT language= «JavaScript»>
   function testData ()
   {
   <xsl:apply-templates select= «fields/field[ (type=0 or type=1 or type=5) and obligatory=1]»/>
   }
</SCRIPT>

  <h1><xsl:value-of disable-output-escaping= «yes» select= «forms_name»/></h1>

  <!-- Выводим ошибку (error), если она была передана через внешний параметр →
  <xsl:if test= «error! = ''»>
  <p><xsl:value-of disable-output-escaping= «yes» select= «error»/></p>
  </xsl:if>

  <!-- Параметр action формы должен быть «./», если обработчик на этой же странице, либо «./form/», если обработчик на другой странице, например. /form/ →
  <form name= «form{forms_id}» action= «./» method= «post» ENCTYPE= «multipart/form-data»>

  <!-- Максимальный размер загружаемых данных — 2 Мб →
  <INPUT TYPE= «hidden» NAME= «MAX_FILE_SIZE» VALUE= «2097152»/>
    <table border= «0» cellpadding= «2» cellspacing= «0»>
       <xsl:apply-templates select= «fields/field» mode= «show_form»>
            <xsl:sort select= «order»/>
       </xsl:apply-templates>
         <xsl:if test= «forms_captcha_key! = 0»>
            <tr>
                <td colspan= «2» align= «center»>Для отправки формы введите число, изображённое на картинке</td>
            </tr>
         <tr>
           <td>
               <img style= «border: 1px solid #000000» src= «/captcha.php?get_captcha={forms_captcha_key}» title= «Введите число изображённое на картинке»/>
           </td>
           <td>
               <input type= «hidden» name= «captcha_key» value= «{forms_captcha_key}»/>
            <input type= «text» name= «captcha_keystring»  style= «width:100%» />
           </td>
         </tr>
       </xsl:if>       
       <tr>
          <td colspan= «2» align= «center»>

              <!-- Простая кнопка →
              <xsl:if test= «forms_button_type=0»>
                 <input onclick= «return testData ()» type= «submit» name= «{forms_button_name}» value= «{forms_button_text_value}» />
              </xsl:if>
              <!-- Кнопка с картинкой →
              <xsl:if test= «forms_button_type=1»>
                 <button onclick= «return testData ()» name= «{forms_button_name}» value= «{forms_button_value}» type= «submit»><xsl:value-of disable-output-escaping= «yes» select= «forms_button_text_value»/></button>
              </xsl:if>
          </td>
       </tr>
    </table>
  </form>
</xsl:template>

  <xsl:template match= «fields/field» mode= «show_form»>
   <!-- Не скрытое поле →
   <xsl:if test= «type!=7»>
    <tr>
       <td><xsl:value-of disable-output-escaping= «yes» select= «field_text_name»/>
               <xsl:if test= «obligatory=1»>
                <sup><font color= «red»>*</font></sup>
             </xsl:if> &#xA0;</td>
       <td>
         <!-- Текстовое поле ввода →
         <xsl:if test= «type=0»>
             <input type= «text» name= «{name}»  value= «{value}» size= «{size}» onmouseout='this.className= «input»' onmouseover='this.className= «input_blur»;' />
             
         </xsl:if>

         <!-- Поле для ввода пароля →
         <xsl:if test= «type=1»>
             <input type= «password» name= «{name}»  value= «{value}» size= «{size}»/>
         </xsl:if>

         <!-- Поле загрузки файла →
         <xsl:if test= «type=2»>
             <input type= «file» name= «{name}» size= «{size}» value= «{value}»/>

         </xsl:if>

         <!-- Радиокнопки →
         <xsl:if test= «type=3»>
              <xsl:apply-templates select= «list/list_item»/>
         </xsl:if>
        
         <!-- Checkbox →
         <xsl:if test= «type=4»>
           <xsl:if test= «checked=1»>
             <input type= «checkbox» name= «{name}» checked= «„/>
           </xsl:if>
           <xsl:if test=„checked=0“>
             <input type=„checkbox“ name=„{name}“/>
           </xsl:if>
         </xsl:if>
        
         <!-- textarea →
         <xsl:if test=„type=5“>
           <textarea onmouseout='this.className=„input“' onmouseover='this.className=„input_blur“;' name=„{name}“ cols=„{cols}“ rows=„{rows}“ wrap= «off“><xsl:value-of disable-output-escaping= «yes» select= «value» /></textarea>
  
         </xsl:if>
        
         <!-- список →
         <xsl:if test= «type=6»>
           <select name= «{name}»>
              <xsl:apply-templates select= «list/list_item»/>
           </select>
         </xsl:if>

             </td>
    </tr>
    </xsl:if>
      <!-- скрытое поле →
      <xsl:if test= «type=7»>
          <input type= «hidden» name= «{name}» value= «{value}»/>
       </xsl:if>
  </xsl:template>

    <!-- Формируем радиогруппу или выпадающий список →
   <xsl:template match= «list/list_item»>
     <xsl:if test= «../../type=3»>   
       <xsl:if test= «list_item_value = (../../value)»>      
         <input id= «{../../name}_{list_item_id}» type= «radio» name= «{../../name}» value= «{list_item_value}» checked= «„/>&#xA0;
        <label for=„{../../name}_{list_item_id}“>
            <xsl:value-of disable-output-escaping=„yes“ select=„list_item_value“/>
        </label><br/>
       </xsl:if>
       <xsl:if test=„list_item_value! = (../../value)“>
         <input id=„{../../name}_{list_item_id}“ type=„radio“ name=„{../../name}“ value=„{list_item_value}“/>&#xA0;
             <label for=„{../../name}_{list_item_id}“><xsl:value-of disable-output-escaping= «yes“ select= «list_item_value»/>
         </label><br/>
       </xsl:if>
     </xsl:if>
     <xsl:if test= «../../type=6»>
       <xsl:if test= «list_item_value =. ./../value»>
         <option value= «{list_item_value}» checked= «„><xsl:value-of disable-output-escaping=„yes“ select=„list_item_value“/></option>
       </xsl:if>
       <xsl:if test=„list_item_value! =. ./../value“>
         <option value=„{list_item_value}“><xsl:value-of disable-output-escaping=„yes“ select=„list_item_value“/></option>
       </xsl:if>
     </xsl:if>
    
   </xsl:template>

   <!-- Формируем тело функции →
   <xsl:template match=„fields/field[ (type=0 or type=1 or type=5) and obligatory=1]“>
  
      if (document.form<xsl:value-of disable-output-escaping=„yes“ select=„../../forms_id“/>.elements['<xsl:value-of disable-output-escaping= «yes“ select= «name»/>'].value == «„) {
      alert („ Заполните поле \“<xsl:value-of disable-output-escaping=„yes“ select=„field_text_name“/>\“!\t „)
      document.form<xsl:value-of disable-output-escaping=„yes“ select=„../../forms_id“/>.elements['<xsl:value-of disable-output-escaping=„yes“ select=„name“/>'].focus ();
      return false;     
     }

   </xsl:template>   

</xsl:stylesheet>



Пример динамической страницы для формы с обработкой CAPTCHA


<?
$forms = new  Forms;

# Идентификатор формы
$forms_id=1;

if (isset ($_POST['Submit']))
{
    $param['type']=0; # 0 — html, 1- plain

    if (!empty ($_POST['email']))
    {
        $param['e-mail'] = $_POST['email'];
    }

    $external_propertys = array ();

    # Производим обработку формы, результат записываем $result_form
    $result_form = $forms->GetForm ($forms_id, 'ОбработкаОтправкиФормы','ПисьмоКураторуФормы',$param);

    if ($result_form===0) # форма не обработана
    {
        $external_propertys['error']=„Вы неверно ввели число подтверждения отправки формы!“;
    }
    elseif ($result_form===false) # форма не обработана
    {
        $external_propertys['error']= «Прошло слишком мало времени с момента последней отправки Вами формы!“;
    }

    # Если была ошибка — выводим форму повторно с сообщением об ошибке
    if (!empty ($external_propertys['error']))
    {
        $forms->ShowForm ($forms_id, 'ОтобразитьФорму',$external_propertys,$_POST);
    }
}
else
{
    $forms->ShowForm ($forms_id, 'ОтобразитьФорму');
}
? >

 

обновление 

30.07.2006