Сайт сообщества | Клуб пользователей | О проекте

Имя
Пароль
ПравилаРегистрацияСправка
Сообщения за деньПоиск

Вернуться   Клуб пользователей портальной системы RUNCMS > Опен Ресурс > Разработчикам > Готовые хаки

Ответ
 
Опции темы Опции просмотра
Renard вне форума Renard
Младший участник


| Цитировать Старый #1 03-18-2005, 02:25

Переделываю регистрацию пользователей, т.к. половина полей не нужна, но взамен надо добавить около 15 новых полей. Ну, как говорится, делаю все по науке - сначала создаю элементы формы а потом добавляю их в форму:
Код:
$pwd_tray   = new XoopsFormElementTray("Пароль (введите дважды)", "");
$pwd_text   = new XoopsFormPassword("" , "pass" , 20, 20);
$pwd_text2  = new XoopsFormPassword("&nbsp", "vpass", 20, 20);
$pwd_tray->addElement($pwd_text);
$pwd_tray->addElement($pwd_text2);
Код:
$reg_form->addElement($pwd_tray);
Сама проблема заключается в том, что форма должна быть разделена на три части, то есть для каждой части формы должно быть что-то типа такой шапки:
Код:
<td colspan="2">Общие сведения</td>
. Как это сделать с помощью API портала - не догоняю. Конечно можно все выводить и простой таблицей, но как-то это неэстетично. Поэтому прошу помощи у тех, кто более плотно занимался с движком.

Посетить домашнюю страницу Renard
  Сообщения: 19 c 22.02.2005 | Репутация: 2
clog вне форума clog
Зам старшего участника

Аватар для clog

| Цитировать Старый #2 03-24-2005, 16:41

Слушай!А ты вообще смог добавить новые поля?Я пробывал по статье, у меня не получаться!?

  Сообщения: 470 c 01.10.2004 | Репутация: 3
LaRok вне форума LaRok
攻殻機動隊


| Цитировать Старый #3 03-25-2005, 05:16

Это можно сделать введя новый класс в портал. Посмотри на поддержке в настройках пользователя. Оно?

Посетить домашнюю страницу LaRok
  Сообщения: 2,045 c 13.09.2003 | Репутация: 25
Renard вне форума Renard
Младший участник


| Цитировать Старый #4 03-25-2005, 10:04

2 clog
Да, я добавил новые поля, а точнее сказать полностью изменил регистрацию. Новые поля добавить в систему - это легко, даже без статьи.
2 LaRok
Да, оно самое. Просвети плз, как это сделать... а то я всю голову сломал

Посетить домашнюю страницу Renard
  Сообщения: 19 c 22.02.2005 | Репутация: 2
LaRok вне форума LaRok
攻殻機動隊


| Цитировать Старый #5 03-26-2005, 04:44

Там дело интересно. Думал и чесал репу как всё это сделать по грубому, чтобы вставлять текст в html сразу в файл при построении формы, но как наверное знаешь такой "финт ушами" не проходит просто по тому что портал при построении формы её открывает и закрывает через классы, а если вводить любой текст в выполняемый файл не через классы он его просто выносит из формы выше основной таблицы. Тут выбор или бить форму по частям или вводить ещё один класс для операций с таблицами.

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

PHP код:
$form = new XoopsThemeForm("""""");
таблица 1
$form
->display();

$form = new XoopsThemeForm("""""");
таблица 2
$form
->display();
.
.

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

Делаем файл nametableform.php

PHP код:

<?php

if (!defined("EXOOPS_NAMETABLEFORM_INCLUDED")) {
    
define("EXOOPS_NAMETABLEFORM_INCLUDED"1);

include_once(
XOOPS_ROOT_PATH."/class/xoopsform/formelement.php");

class 
NameTableForm extends XoopsFormElement {

    function 
NameTableForm($name$value) {
        
$this->setHidden();
        
$this->setName($name);
        
$this->value $value;
    }

//---------------------------------------------------------------------------------------//

function getName() {
    return 
$this->name;
}

function 
getValue() {
    return 
$this->value;
}

//---------------------------------------------------------------------------------------//

function render() {
    if ( 
$this->getValue() == '1' ) {
        return 
"<tr valign='top'><td nowrap='nowrap' colspan='2'><b>".$this->getName()."</b></td></tr>";
            } else if ( 
$this->getValue() == '2' ) {
                return 
"
                </table></td></tr></table><br>
                <table border='0' cellpadding='0' cellspacing='0' valign='top' width='100%'><tr><td class='bg2'>
                <table width='100%' border='0' cellpadding='4' cellspacing='1'><tr><td nowrap='nowrap' colspan='2'><b>"
.$this->getName()."</b></td></tr>";
                    } else if ( 
$this->getValue() == '3' ) {
                        return 
"<tr valign='top'><td nowrap='nowrap' colspan='2' class='bg1'><b>".$this->getName()."</b></td></tr>";
}

//---------------------------------------------------------------------------------------//
// END CLASS
// END DEFINED
?>
Сохраняем, кидаем в \class\xoopsform\

Это собсно и есть наш новый класс для операций с таблицами.

Пока там три типа вставки для работы с таблицами.

1 - Для ввода колонки с именем и одной ячейкой в таблицу без бекграунда. Задник цвета бордера основной таблицы формы.

2 - Для закрытия таблицы, отступа, открытия другой таблицы, ввода колнки с именеми одной ячейкой.

3 - Для ввода колонки с именем и одной ячейкой в таблицу с бекграундом.

Можно в принципе ещё добавить почти что угодно для формирования таблиц формы, но пока не понадобилось.

Подключаем данный класс к остальным классам портала для вывода при формировании формы.

Открываем \class\xoopsformloader.php

Добавляем подключение.

PHP код:
include_once(XOOPS_ROOT_PATH."/class/xoopsform/nametableform.php"); 
ниже

PHP код:
include_once(XOOPS_ROOT_PATH."/class/xoopsform/formselectmodule.php"); 
Ну и дальше уже работаем с новым классом в формах, нопример в том же edituser.php где у нас форма редактирования данных пользователя.

Через:

PHP код:
$td_row = new NameTableForm('название''тип(1,2,3)');
$form->addElement($td_row); 
Там где формируется форма через API.

Гы.. С почином меня. Первый класс для портала ввёл.

Последний раз редактировалось LaRok, 03-26-2005 в 09:26
Причина: Потёр лишнее..

Посетить домашнюю страницу LaRok
  Сообщения: 2,045 c 13.09.2003 | Репутация: 25
Renard вне форума Renard
Младший участник


| Цитировать Старый #6 03-26-2005, 08:52

Учитель, я преклоняюсь перед Вашим Кунгфу!!!
Огромное спасибо, реально помог!!!

Посетить домашнюю страницу Renard
  Сообщения: 19 c 22.02.2005 | Репутация: 2
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Рейтинг@Mail.ru Хостинг провайдер Majordomo. Powered by: vBulletin Version 3.0
Copyright ©2000-2024, Jelsoft Enterprises Ltd.
Все разделы прочитаны - Руководство форума - Архив - Вверх
Rambler's Top100
Output: 70.63 Kb. compressed to 65.97 Kb. by saving 4.65 Kb. (6.59%)
Page generated in 0.07348 seconds with 12 queries