Вход Регистрация
Файл: InstantSocial/uploud/admin/components/forms/backend.php
Строк: 378
<?php
if(!defined('VALID_CMS_ADMIN')) { die('ACCESS DENIED'); }
/******************************************************************************/
//                                                                            //
//                             InstantCMS v1.9                                //
//                        http://www.instantcms.ru/                           //
//                                                                            //
//                   written by InstantCMS Team, 2007-2011                    //
//                produced by InstantSoft, (www.instantsoft.ru)               //
//                                                                            //
//                        LICENSED BY GNU/GPL v2                              //
//                                                                            //
/******************************************************************************/

    
require('../includes/jwtabs.php');

    
$GLOBALS['cp_page_head'][] = '<script language="JavaScript" type="text/javascript" src="js/forms.js"></script>';                                    
    
$GLOBALS['cp_page_head'][] = jwHeader();

    
cpAddPathway('Конструктор форм''?view=components&do=config&id='.$_REQUEST['id']);
    if (isset(
$_REQUEST['opt'])) { $opt $_REQUEST['opt']; } else { $opt 'list'; }

    
$toolmenu = array();
    
$toolmenu[0]['icon'] = 'newform.gif';
    
$toolmenu[0]['title'] = 'Новая форма';
    
$toolmenu[0]['link'] = '?view=components&do=config&id='.$_REQUEST['id'].'&opt=add';

    
$toolmenu[1]['icon'] = 'listforms.gif';
    
$toolmenu[1]['title'] = 'Формы';
    
$toolmenu[1]['link'] = '?view=components&do=config&id='.$_REQUEST['id'].'&opt=list';

    if(
$opt!='list'){
        
$toolmenu[3]['icon'] = 'cancel.gif';
        
$toolmenu[3]['title'] = 'Отмена';
        
$toolmenu[3]['link'] = '?view=components&do=config&id='.$_REQUEST['id'];
    }

    
cpToolMenu($toolmenu);

    
$inPage cmsPage::getInstance();
    
$inDB cmsDatabase::getInstance();

    
//LOAD CURRENT CONFIG
    
$cfg $inCore->loadComponentConfig('forms');

    if(
$opt=='saveconfig'){    
        
$cfg = array();
        
$cfg['email'] = $_REQUEST['email'];
        
$cfg['delivery'] = $_REQUEST['delivery'];
            
        
$inCore->saveComponentConfig('forms'$cfg);
        
        
header('location:index.php?view=components&do=config&id='.$_REQUEST['id'].'&opt=list');    
    }
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    
function autoOrder($form_id){
        
$inDB cmsDatabase::getInstance();
        
$sql "SELECT * FROM cms_form_fields WHERE form_id = $form_id ORDER BY ordering";
        
$rs dbQuery($sql);
        if (
mysql_num_rows($rs)){
            
$ord 1;
            while (
$item mysql_fetch_assoc($rs)){
                
dbQuery("UPDATE cms_form_fields SET ordering = ".$ord." WHERE id=".$item['id']);
                
$ord += 1;
            }                
        }
        return 
true;
    }

    if(
$opt == 'up_field'){
        if(isset(
$_REQUEST['item_id'])) { 
            
$id $_REQUEST['item_id'];
            
$form_id $_REQUEST['form_id'];
            
$ord $inDB->get_field('cms_form_fields''id = '.$id'ordering');        
            
$sql "SELECT * FROM cms_form_fields WHERE form_id = $form_id AND ordering < $ord ORDER BY ordering DESC LIMIT 1";
            
$rs dbQuery($sql);            
            if (
mysql_num_rows($rs)){
                
$prev mysql_fetch_assoc($rs);
                
$sql "UPDATE cms_form_fields SET ordering = $ord WHERE id = ".$prev['id'];
                
dbQuery($sql);
                
$sql "UPDATE cms_form_fields SET ordering = ".$prev['ordering']." WHERE id = ".$id;
                
dbQuery($sql);
                
autoOrder($form_id);
            }
        }
        
header('location:index.php?view=components&do=config&id='.$_REQUEST['id'].'&opt=edit&item_id='.$form_id);    
    }

    if(
$opt == 'down_field'){
        if(isset(
$_REQUEST['item_id'])) { 
            
$id $_REQUEST['item_id'];
            
$form_id $_REQUEST['form_id'];
            
$ord $inDB->get_field('cms_form_fields''id = '.$id'ordering');        
            
$sql "SELECT * FROM cms_form_fields WHERE form_id = $form_id AND ordering > $ord ORDER BY ordering ASC LIMIT 1";
            
$rs dbQuery($sql);            
            if (
mysql_num_rows($rs)){
                
$next mysql_fetch_assoc($rs);
                
$sql "UPDATE cms_form_fields SET ordering = $ord WHERE id = ".$next['id'];
                
dbQuery($sql);
                
$sql "UPDATE cms_form_fields SET ordering = ".$next['ordering']." WHERE id = ".$id;
                
dbQuery($sql);
                
autoOrder($form_id);
            }
        }
        
header('location:index.php?view=components&do=config&id='.$_REQUEST['id'].'&opt=edit&item_id='.$form_id);    
    }
    
    if(
$opt == 'del_field'){
        if(isset(
$_REQUEST['item_id'])) { 
            
$id $_REQUEST['item_id'];
            
$form_id $_REQUEST['form_id'];
            
//DELETE FIELD
            
$sql "DELETE FROM cms_form_fields WHERE id = $id";
            
dbQuery($sql) ;            
        }
        
header('location:index.php?view=components&do=config&id='.$_REQUEST['id'].'&opt=edit&item_id='.$form_id);
    }
    
    if (
$opt == 'add_field'){
            
        
$kind $_REQUEST['kind'];
        
$title $_REQUEST['f_title'];
        
$order $_REQUEST['f_order'];
        
$form_id $_REQUEST['form_id'];
        
$mustbe $_REQUEST['mustbe'];
        
        
$cfg = array();
        
        switch(
$kind){        
            case 
'text'$cfg['max'] = $_REQUEST['f_text_max'];
                         
$cfg['size'] = $_REQUEST['f_text_size'];
                         
$cfg['default'] = $_REQUEST['f_text_default'];
                         break;
            case 
'textarea'$cfg['max'] = $_REQUEST['f_ta_max'];
                             
$cfg['size'] = $_REQUEST['f_ta_size'];
                             
$cfg['rows'] = $_REQUEST['f_ta_rows'];
                             
$cfg['default'] = $_REQUEST['f_ta_default'];
                             break;
            case 
'checkbox'$cfg['checked'] = $_REQUEST['f_checked'];
                             break;        
            case 
'radiogroup'$cfg['items'] = $_REQUEST['f_rg_list'];
                               break;        
            case 
'list'$cfg['items'] = $_REQUEST['f_list_list'];
                         break;        
            case 
'menu'$cfg['items'] = $_REQUEST['f_menu_list'];
                         break;                
        }
        
        
$config serialize($cfg);
        
        
$sql "INSERT INTO cms_form_fields (form_id, title, ordering, kind, mustbe, config)
                VALUES (
$form_id, '$title', $order, '$kind', $mustbe, '$config')";
        
dbQuery($sql) ;
        
        
header('location:index.php?view=components&do=config&id='.$_REQUEST['id'].'&opt=edit&item_id='.$form_id);    
    }
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    
if ($opt == 'submit'){
            
        
$title $inCore->request('title''str''Форма без названия');
        
$description $_REQUEST['description'];

        
$sendto $_REQUEST['sendto']; 
        
$email $_REQUEST['email'];
        
$user_id $_REQUEST['user_id'];
        
        
$sql "INSERT INTO cms_forms (title, description, email, sendto, user_id)
                VALUES ('
$title', '$description', '$email', '$sendto', '$user_id')";
        
dbQuery($sql);
        
        
header('location:index.php?view=components&do=config&id='.$_REQUEST['id'].'&opt=list');    
    }      
    
    if(
$opt == 'delete'){
        if(isset(
$_REQUEST['item_id'])) { 
            
$id $_REQUEST['item_id'];
            
//DELETE FIELDS
            
$sql "DELETE FROM cms_form_fields WHERE form_id = $id";
            
dbQuery($sql) ;            
            
//DELETE FORM
            
$sql "DELETE FROM cms_forms WHERE id = $id LIMIT 1";
            
dbQuery($sql) ;            
        }
        
header('location:index.php?view=components&do=config&id='.$_REQUEST['id'].'&opt=list');    
    }
    
    if (
$opt == 'update'){
        if(isset(
$_REQUEST['item_id'])) { 
            
$id $_REQUEST['item_id'];
            
            if (!empty(
$_REQUEST['title'])) { $title $_REQUEST['title']; } else { error("Укажите название формы!"); }    
            
$description $_REQUEST['description'];

            
$sendto $_REQUEST['sendto']; 
            
$email $_REQUEST['email'];
            
$user_id $_REQUEST['user_id'];
            
            
$sql "UPDATE cms_forms
                    SET title='
$title', 
                        description='
$description',
                        email='
$email',
                        sendto='
$sendto',
                        user_id = '
$user_id'
                    WHERE id = 
$id
                    LIMIT 1"
;
            
dbQuery($sql) ;
                            
            
header('location:index.php?view=components&do=config&id='.$_REQUEST['id'].'&opt=list');    
        }
    }
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////    
    
if ($opt == 'list'){
        
cpAddPathway('Формы''?view=components&do=config&id='.$_REQUEST['id'].'&opt=list');
        echo 
'<h3>Формы</h3>';
        
        
//TABLE COLUMNS
        
$fields = array();

        
$fields[0]['title'] = 'id';            $fields[0]['field'] = 'id';            $fields[0]['width'] = '30';

        
$fields[1]['title'] = 'Название';    $fields[1]['field'] = 'title';        $fields[1]['width'] = ''$fields[1]['link'] = '?view=components&do=config&id='.$_REQUEST['id'].'&opt=edit&item_id=%id%';

        
$fields[2]['title'] = 'E-Mail';        $fields[2]['field'] = 'email';        $fields[2]['width'] = '150';     

        
//ACTIONS
        
$actions = array();
        
$actions[0]['title'] = 'Редактировать';
        
$actions[0]['icon']  = 'edit.gif';
        
$actions[0]['link']  = '?view=components&do=config&id='.$_REQUEST['id'].'&opt=edit&item_id=%id%';

        
$actions[1]['title'] = 'Удалить';
        
$actions[1]['icon']  = 'delete.gif';
        
$actions[1]['confirm'] = 'Удалить форму?';
        
$actions[1]['link']  = '?view=components&do=config&id='.$_REQUEST['id'].'&opt=delete&item_id=%id%';
                
        
//Print table
        
cpListTable('cms_forms'$fields$actions);        
    }

    if(
$opt=='add' || $opt=='edit'){
                    
        if (
$opt=='add'){

             
cpAddPathway('Добавить форму''?view=components&do=config&id='.$_REQUEST['id'].'&opt=add');
             echo 
'<h3>Добавить форму</h3>';
             
        } else {
             if(isset(
$_REQUEST['item_id'])){
                 
$id $_REQUEST['item_id'];
                 
$sql "SELECT * FROM cms_forms WHERE id = $id LIMIT 1";
                 
$result dbQuery($sql) ;
                 if (
mysql_num_rows($result)){
                    
$mod mysql_fetch_assoc($result);
                 }
             }
            
             echo 
'<h3>Форма: '.$mod['title'].'</h3>';
              
cpAddPathway($mod['title'], '?view=components&do=config&id='.$_REQUEST['id'].'&opt=edit&item_id='.$id);

        }

    
?>
      <?php if($opt=='edit'){ob_start();} ?><?php if($opt=='edit') { echo '{tab=Свойства формы}'; } ?>
      <form id="addform" name="addform" method="post" action="index.php?view=components&do=config&id=<?php echo $_REQUEST['id'];?>">
        <table width="605" border="0" cellspacing="5" class="proptable">
          <tr>
            <td width="200"><strong>Название формы: </strong></td>
            <td width=""><input name="title" type="text" id="title" size="30" value="<?php echo htmlspecialchars($mod['title']);?>" style="width:220px;"/></td>
          </tr>
          <tr>
            <td><strong>Куда отправлять форму: </strong></td>
            <td>
             <select name="sendto" id="sendto" style="width:220px;" onChange="toggleSendTo()">
              <option value="mail" <?php if(@$mod['sendto']=='mail' || !isset($mod['sendto'])) { echo 'selected'; } ?>>На адрес e-mail</option>
              <option value="user" <?php if(@$mod['sendto']=='user') { echo 'selected'; } ?>>Личным сообщением на сайте</option>
            </select>            </td>
          </tr>
        </table>
        <div id="sendto_mail" <?php if(@$mod['sendto']=='mail' || !isset($mod['sendto'])) { echo 'style="display:block"'; } else { echo 'style="display:none"'; }?>>
        <table width="605" border="0" cellspacing="5" class="proptable">
          <tr>
            <td width="16"><img src="/admin/components/forms/email.gif" width="16" height="16"></td>
            <td width="178"><strong>Адрес e-mail: </strong></td>
            <td><input name="email" type="text" id="email" size="30" value="<?php echo @$mod['email'];?>" style="width:220px;"/></td>
          </tr>
        </table>
        </div>
        <div id="sendto_user" <?php if(@$mod['sendto']=='user') { echo 'style="display:block"'; } else { echo 'style="display:none"'; }?>>
        <table width="605" border="0" cellspacing="5" class="proptable">
          <tr>
            <td width="16"><img src="/admin/components/forms/user.gif" width="16" height="16"></td>
            <td width="178"><strong>Получатель: </strong></td>
            <td>
                <select name="user_id" id="user_id" style="width:220px">
                  <?php
                        
if (isset($mod['user_id'])) {
                            echo 
$inCore->getListItems('cms_users'$mod['user_id'], 'nickname''ASC''is_deleted=0 AND is_locked=0''id''nickname');
                        } else {
                            echo 
$inCore->getListItems('cms_users'0'nickname''ASC''is_deleted=0 AND is_locked=0''id''nickname');
                        }
                  
?>
                </select>
            </td>
          </tr>
        </table>
        </div>
        <table width="100%" border="0">
          <tr>
            <?php
                
echo '<td width="52%" valign="top">';
                echo 
'<p><strong>Пояснения к форме:</strong></p>';

                
$inCore->insertEditor('description'$mod['description'], '280''100%');
                
                echo 
'</td>';
            
?>
          </tr>
        </table>    
        <?php if ($opt=='add') { echo '<p><b>Примечание: </b>После создания формы вернитесь в режим ее редактирования, чтобы добавить поля. </p>'; } 
        else {echo 
'<p><b>Примечание: </b> Чтобы вставить форму в материал (статью/новость), укажите в нужном<br/> месте статьи выражение {ФОРМА=Название формы}, либо воспользуйтесь панелью вставки,<br/> расположенной над окном редактора материала.';} ?>
        <p>
          <label>
          <input name="add_mod" type="submit" id="add_mod" <?php if ($opt=='add') { echo 'value="Создать форму"'; } else { echo 'value="Сохранить изменения"'; } ?> />
          </label>
          <label>
          <input name="reset" type="reset" id="reset" value="Сброс" />
          </label>
          <input name="opt" type="hidden" id="do" <?php if ($opt=='add') { echo 'value="submit"'; } else { echo 'value="update"'; } ?> />
          <?php
              
if ($opt=='edit'){
             echo 
'<input name="item_id" type="hidden" value="'.$mod['id'].'" />';
            }
          
?>
        </p>
      </form>
      <p>
        <?php    
    
    
if ($opt=='edit'){
        
$last_order $inDB->get_field('cms_form_fields'"form_id='{$mod['id']}' ORDER BY ordering DESC"'ordering');
?>    
    {tab=Поля формы}
    <table width="761" cellpadding="8" cellspacing="5">
    <tr>
        <td width="300" valign="top" class="proptable">
            <p style="border-bottom:solid 1px black"><b>Добавить поле</b></p>
            <form id="fieldform" name="fieldform" method="post" action="index.php?view=components&do=config&id=<?php echo $_REQUEST['id'];?>">
             <input type="hidden" name="opt" value="add_field"/>
              <input name="form_id" type="hidden" id="form_id" value="<?php echo @$id?>"/>
              <table width="100%" border="0" cellspacing="2" cellpadding="0">
                <tr>
                  <td width="100">Тип поля: </td>
                  <td>
                      <select name="kind" id="kind" onchange="show()">
                          <option value="text" selected="selected">Текстовое</option>
                          <option value="textarea">Многострочное</option>
                          <option value="checkbox">Опция да/нет</option>
                          <option value="radiogroup">Группа опций</option>
                          <option value="list">Выпадающий список</option>
                          <option value="menu">Видимый список</option>
                      </select>                  </td>
                </tr>
                <tr>
                  <td>Заголовок:</td>
                  <td><input name="f_title" type="text" id="f_title" size="25" /></td>
                </tr>
                <tr>
                  <td>Порядок:</td>
                  <td><input name="f_order" type="text" id="f_order" value="<?php echo $last_order?>" size="6" /></td>
                </tr>
                <tr>
                  <td>Заполнение:</td>
                  <td><select name="mustbe" id="mustbe" onchange="show()">
                    <option value="1">Обязательно</option>
                    <option value="0">Не обязательно</option>
                                    </select></td>
                </tr>
              </table>
                        
            <div id="kind_text">
              <table width="100%" border="0" cellspacing="2" cellpadding="0">

                <tr>
                  <td width="100">Макс. длина :</td>
                  <td><input name="f_text_max" type="text" id="f_text_max" value="200" size="6" /> 
                    символов </td>
                </tr>
                <tr>
                  <td>Размер:</td>
                  <td><input name="f_text_size" type="text" id="f_text_size" value="30" size="6" /> 
                    символов </td>
                </tr>
                <tr>
                  <td>Текст: </td>
                  <td><input name="f_text_default" type="text" id="f_text_default" size="25" /></td>
                </tr>
              </table>
            </div>
            <div id="kind_textarea" style="display:none">
            <table width="100%" border="0" cellspacing="2" cellpadding="0">

                <tr>
                  <td width="100">Макс. длина :</td>
                  <td><input name="f_ta_max" type="text" id="f_ta_max" value="200" size="6" /> 
                    символов </td>
                </tr>
                <tr>
                  <td>Размер:</td>
                  <td><input name="f_ta_size" type="text" id="f_ta_size" value="30" size="6" /> 
                    символов </td>
                </tr>
                <tr>
              <tr>
                      <td>Строк:</td>
                      <td><input name="f_ta_rows" type="text" id="f_ta_rows" value="5" size="6" /></td>
              </tr>
                  <td>Текст: </td>
                  <td><input name="f_ta_default" type="text" id="f_ta_default" size="25" /></td>
                </tr>
              </table>
            </div>            
            <div id="kind_checkbox" style="display:none">
              <div id="div" >
                <table width="100%" border="0" cellspacing="2" cellpadding="0">
                  <tr>
                    <td width="100">Отметка:</td>
                    <td><select name="f_checked" id="f_checked">
                      <option value="1">Отмечена</option>
                      <option value="0">Не отмечена</option>
                    </select>
                    </td>
                  </tr>
                </table>
              </div>
            </div>            
            <div id="kind_radiogroup" style="display:none">
              <table width="100%" border="0" cellspacing="2" cellpadding="0">
                <tr>
                  <td width="100">Элементы:<br />
                    <small>через "<b>/</b>"</small> </td>
                  <td><textarea name="f_rg_list" cols="20" rows="5" id="f_rg_list"></textarea></td>
                </tr>
              </table>
            </div>
            <div id="kind_list" style="display:none">
              <table width="100%" border="0" cellspacing="2" cellpadding="0">
                <tr>
                  <td width="100">Элементы:<br />
                      <small>через "<b>/</b>"</small> </td>
                  <td><textarea name="f_list_list" cols="20" rows="5" id="f_list_list"></textarea></td>
                </tr>
              </table>
            </div>
            <div id="kind_menu" style="display:none">
              <table width="100%" border="0" cellspacing="2" cellpadding="0">
                <tr>
                  <td width="100">Элементы:<br />
                      <small>через "<b>/</b>"</small> </td>
                  <td><textarea name="f_menu_list" cols="20" rows="5" id="f_menu_list"></textarea></td>
                </tr>
              </table>
            </div>    
                        
            <p>
              <input type="submit" name="Submit" value="Добавить поле" />
            </p>
            </form>            
            
      </td>
        <td width="440" valign="top" class="proptable"><p style="border-bottom:solid 1px black"><b>Предварительный просмотр </b></p>
          <?php echo $inPage->buildForm($idtrue); ?></td>
    </tr>
    </table>
    {/tabs}
    <?php
     
echo jwTabs(ob_get_clean());
    
    
?>
    <?php
    
}
    
    }
    


?>
Онлайн: 2
Реклама