Russian TYPO3 community Форум больше не используется. Присоединяйтесь к каналу #community-ru в Slack for TYPO3 community  

Вернуться   Russian TYPO3 community > Тематические форумы > Разработка расширений / TYPO3 extension development

Ответ
 
Опции темы Опции просмотра
Старый 15.07.2008, 09:27   #1
(:)
Senior Member
 
Регистрация: 05.04.2006
Сообщений: 105
По умолчанию be_users/groups управление без actions как?

всем доброго дня!
Имеем свой модуль в котором юзер может создать группы страниц.
Требуется для каждой новой группы страниц создавать группу в be_groups и затем иметь возможность добавлять в неё новых пользователей в be_users.

С идеологией варианта sys_action знаком. Но нам нужна встроенная в модуль функция совмещенная с созданием страниц. Экшн предлагает делать через свой интерфейс, в этом неудобство.

Может есть уже готовые решения для примера посмотреть. Или мысли как сделать?

заранее спасибо
Евгений
(:) вне форума   Ответить с цитированием
Старый 18.07.2008, 22:15   #2
Sergey M Nikitin
Administrator
 
Аватар для Sergey M Nikitin
 
Регистрация: 10.07.2007
Адрес: Moscow
Сообщений: 181
Отправить сообщение для Sergey M Nikitin с помощью ICQ Отправить сообщение для Sergey M Nikitin с помощью Skype™
По умолчанию Пишите свой мой совет

У меня была задача написание визарда:
Автоматическое создание 2х уровней страниц, для каждой страницы создавалась группа fe-пользователей + дефолтовое создание структуры chc-форума. В БЕ это предельно просто, даже SQL запросы не надо писать.
PHP код:
$data['pages']['NEW_LIGA'] = array(
    
"title" => t3lib_div::_GP('liganame'),
    
"hidden" => 0,
    
"pid" => "12",
);

$data['pages']['NEW_ligaData'] = array(
        
"title" => 'data',
        
"hidden" => 0,
        
"pid" => "NEW_LIGA",
        
"doktype" => 254
);


$storagePidReMap = array();

foreach (
t3lib_div::_GP('workshopTitle') as $w){
    
$data['pages']['NEW_workshop'.$i] = array(
        
"title" => $w,
        
"hidden" => 0,
        
"pid" => "NEW_LIGA"
    
);
    
    
$data['pages']['NEW_workshopData'.$i] = array(
        
"title" => 'data',
        
"hidden" => 0,
        
"pid" => 'NEW_workshop'.$i,
        
"doktype" => 254
    
);
    
    
$data['fe_groups']['NEW_fegroup'.$i] = array(
        
"title" => $w,
        
"hidden" => 0,
        
"pid" => 'NEW_workshopData'.$i
    
);
    
    
$storagePidReMap['NEW_workshop'.$i] = 'NEW_workshopData'.$i;
    
    
$i++;
}


$category 0;
foreach (
t3lib_div::_GP('forum') as $f){
    if(
$f['category'] != ""){
        
$i++;
        
$data['tx_chcforum_category']['NEWcategory_'.$i] = array(
            
"cat_title" => $f['category'],
            
"hidden" => 0,
            
"pid" => "NEW_ligaData"
        
);
    }
    if(
$f['conference'] != ""){
        
$i++;
        
$data['tx_chcforum_conference']['NEWconference_'.$i] = array(
            
"conference_name" => $f['conference'],
            
"hidden" => 0,
            
"cat_id" => 'NEWcategory_'.($i-1),
            
"pid" => "NEW_ligaData"
        
);
    }
}

$tce t3lib_div::makeInstance('t3lib_TCEmain');
$tce->stripslashes_values 0;
$tce->start($data,array());
$tce->process_datamap();
unset(
$data);

$data['pages'][$tce->substNEWwithIDs['NEW_LIGA']] = array(
    
"storage_pid" => $tce->substNEWwithIDs['NEW_ligaData']
);

foreach (
$storagePidReMap as $k => $v){
    
$data['pages'][$tce->substNEWwithIDs[$k]] = array(
        
"storage_pid" => $tce->substNEWwithIDs[$v]
    );
}

$tce2 t3lib_div::makeInstance('t3lib_TCEmain');
$tce2->stripslashes_values 0;
$tce2->start($data,array());
$tce2->process_datamap(); 
Вот кусок кода, который вобщем-то все и делал.

см. http://typo3.org/documentation/docum....1.0/view/3/3/
Sergey M Nikitin вне форума   Ответить с цитированием
Старый 29.07.2008, 17:00   #3
(:)
Senior Member
 
Регистрация: 05.04.2006
Сообщений: 105
По умолчанию

привет, спасибо,

есть два момента.

код добавления новой группы в be_groups нормально работает, если БЕ пользователь имеет админские права. Также, в вашем примере группы добавляются не на корневую страницу с ИД=0.

В нашей задаче требуется как раз добавлять на страницу с ИД=0, плюс пользователь не обладает админскими правами.
(:) вне форума   Ответить с цитированием
Старый 29.07.2008, 20:01   #4
Sergey M Nikitin
Administrator
 
Аватар для Sergey M Nikitin
 
Регистрация: 10.07.2007
Адрес: Moscow
Сообщений: 181
Отправить сообщение для Sergey M Nikitin с помощью ICQ Отправить сообщение для Sergey M Nikitin с помощью Skype™
По умолчанию Може так ?

Код:
$data['pages']['NEW_ligaData'] = array(
        "title" => 'data',
        "hidden" => 0,
        "pid" => 0",
        "doktype" => 254
);
Sergey M Nikitin вне форума   Ответить с цитированием
Старый 29.07.2008, 20:15   #5
Sergey M Nikitin
Administrator
 
Аватар для Sergey M Nikitin
 
Регистрация: 10.07.2007
Адрес: Moscow
Сообщений: 181
Отправить сообщение для Sergey M Nikitin с помощью ICQ Отправить сообщение для Sergey M Nikitin с помощью Skype™
По умолчанию Сорри пропустил что он не имеет админские права

Можете использовать Formidable (formidable.typo3.ug) в качестве формогенератора в БЕ, единственное, читайте внимательно рассылку там есть определенные ограничение для БЕ, так как библиотека создавалась для FE. Вот к примеру как правильно надо инициализировать Formidable в БЕ

Код:
$this->oForm = t3lib_div::makeInstance("tx_ameosformidable");
$this->oForm->init(
	$this,	// reference to the current plugin object
	"EXT:prme_feusersinbe/res/users.xml" // soft-path to xml file
);
$this->content .= $this->oForm->render();
tx_ameosformidable::backendHeaders(&$this);
Sergey M Nikitin вне форума   Ответить с цитированием
Старый 31.07.2008, 11:49   #6
(:)
Senior Member
 
Регистрация: 05.04.2006
Сообщений: 105
По умолчанию

Привет,

В коде через ТСЕмейн создаем записи в таблицах be_groups и be_users.
Если у пользователя Админские права код работает нормально.
В случае неАдмина возникают проблемы с доступом.

Система проверки прав тайпы проверяет следюущее:
1) не позволяет добавлять записи на нулевую страницу никому кроме админа.
2) При добавлениии записей не все поля принимают заданные значения.

И вобщем-то это понятно, поскольку так работает система прав.

Вопрос же в том, как сказать ТСЕМейн что мы даем неАдмину права выполнять админские действия?

Расширение Actions по сути делает именно это.

Заглянув в исходники sys_action класс class.tx_sysaction.php находим подтверждение этому.

PHP код:
...
$tce t3lib_div::makeInstance("t3lib_TCEmain");
$tce->stripslashes_values=0;
$tce->start($data,Array(),$this->BE_USER);

/****************/
$tce->admin=1;
/***************/

$tce->process_datamap();
... 
вот именно этот код
PHP код:
$tce->admin=1
позволяет задать в ТСЕМейн права админа для любой операции даже если пользователь не обладает админскими правами.

надеюсь это поможет,
привет
(:) вне форума   Ответить с цитированием
Ответ


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

BB code is Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Таксономия в typo3 (как реализовать?) Slanj Общие вопросы 19 24.06.2013 01:14
Как в RTE HtmlArea добавить свою кнопку? Дылгеров Ц.В. HTMLArea, RTE, tinymce_rte и другие визуальные редакторы 9 17.04.2008 20:21
посоветуйте как разобраться с ImageMagic-ом -=STYDENT=- Общие вопросы 3 27.07.2006 23:54
Как сделать активный пункт меню без тега <a> ? KUMARIN Общие вопросы 2 21.07.2006 23:02


Часовой пояс GMT +4, время: 11:24.


Работает на vBulletin® версия 3.8.1.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot

Хостинг и техническая поддержка: TYPO3 Лаборатория