Line # Revision Author
1 8 ahitrov@rambler.ru <%args>
2 $id => undef
3 $login => undef
4 $ret => undef
5
6 $delete => undef
7 $save => undef
8
9 $class => undef
10 </%args>
11 <%init>
12 unless ($user->check_group(1)) {
13 $m->clear_buffer;
14 $m->abort(403);
15 }
16
17 my $luser;
18
19 # Проверка заданности класса - он должен быть задан явно...
20 if ($class)
21 {
22 my @correct_classes = (@{ $state->{available_users} }, 'Contenido::User');
23 if (! (grep { $_ eq $class } @correct_classes))
24 {
25 # Класс задан, но он не корректный
26 $class = undef;
27 }
28 }
29
30 if ($id && ($id>0)) {
31 $luser = $keeper->get_user_by_id($id, class=>$class);
32 } elsif ($login && (length $login > 0)) {
33 $luser = $keeper->get_user_by_login($login, class=>$class);
34 }
35
36 if ($class and !ref($luser)) {
37 $luser = $class->new($keeper);
38 }
39
40 # Удаление...
41 if (ref $luser && $delete == 1)
42 {
43 $luser->delete();
44
45 $r->header_out("Location", "/contenido/?set_context=profile-admin");
46 $r->status(302);
47 $r->send_http_header();
48 $m->abort();
49 }
50
51 # Сохранение ...
52 elsif (ref $luser && $save == 1)
53 {
54 my @groups = $luser->groups();
55 my $res = $m->comp('/contenido/components/set_properties.msn', object => $luser, SETS => \%ARGS);
56 if ($res != 1)
57 {
58 # Ошибка, надо бы обработать...
59 warn "Contenido Debug: set_properties.msn вернул $res\n" if ($state->debug());
60 }
61 $luser->groups(@groups);
62 $luser->store();
63
64 $r->header_out("Location", "users.html?id=".$luser->id()."&class=$class");
65 $r->status(302);
66 $r->send_http_header();
67 $m->abort();
68 }
69
70 </%init>
71
72
73 <& "/contenido/components/header.msn" &>
74 <& "/contenido/components/naviline.msn" &>
75
76 40 ahitrov@rambler.ru <script type="text/javascript">
77 <!--
78 function set_create_button( oSelect, sBtnID ) {
79 if ( oSelect.value == '' ) {
80 $('#'+sBtnID).attr('disabled','disabled');
81 } else {
82 $('#'+sBtnID).removeAttr('disabled');
83 }
84 }
85 //-->
86 </script>
87
88 8 ahitrov@rambler.ru % if ((!defined $luser || !$luser->login) && (!defined $class || !$class))
89 % {
90 % if (!defined $class || !$class) {
91 <!-- Блок с выбором нового пользователя для создания -->
92 <table width="50%" border="0">
93 <tr>
94 <td>
95 <fieldset>
96 <legend>Выберите тип пользователя для создания</legend>
97 <& "/contenido/components/new_objects_form.msn", proto => 'users' &>
98 </fieldset>
99 </td>
100 </tr>
101 </table>
102 % }
103 % } elsif (ref $luser) {
104 <& "/contenido/components/obj_list_js.msn", object => $luser &>
105 <& "/contenido/components/object_form.msn", object => $luser, proto => 'users' &>
106 % if ($luser->login) {
107 <!-- Доступ к секциям -->
108 <br>
109 <table width="100%" cellspacing="5" cellpadding="0" border="0">
110 <tr>
111 <td valign=top><& "/contenido/components/user_sections.msn", luser => $luser &></td>
112 </tr>
113 </table>
114 <!-- / Доступ к секциям -->
115 % }
116 % }
117
118 </body>
119 </html>

Небольшая справка по веткам

cnddist – контейнер, в котором хранятся все дистрибутивы всех библиотек и программных пакетов, которые использовались при построении различных версий Contenido. Если какой-то библиотеки в данном хранилище нет, инсталлятор сделает попытку "подтянуть" ее с веба (например, с CPAN). Если библиотека слишком старая, есть очень большая вероятность, что ее там уже нет. Поэтому мы храним весь хлам от всех сборок. Если какой-то дистрибутив вдруг отсутствует в cnddist - напишите нам, мы положим его туда.

koi8 – отмирающая ветка, чей код, выдача и все внутренние библиотеки заточены на кодировку KOI8-R. Вносятся только те дополнения, которые касаются внешнего вида и функционала админки, баги ядра, обязательные обновления портов и мелочи, которые легко скопипастить. В дальнейшем планируется полная остановка поддержки по данной ветке.

utf8 – актуальная ветка, заточенная под UTF-8.

Внутри каждой ветки: core – исходники ядра; install – скрипт установки инсталляции; plugins – плагины; samples – "готовые к употреблению" проекты, которые можно поставить, запустить и посмотреть, как они работают.