Revision 3 (by ahitrov@rambler.ru, 2010/03/24 15:19:32) |
The CORE
|
<script language="JavaScript">
<!--
var dom = (document.getElementById) ? true : false;
var nn4 = (document.layers) ? true : false;
var ie4 = (!dom && document.all) ? true : false;
var layerOk;
if (dom || ie4 || nn4) { layerOk = 1; }
else { layerOk = 0; }
var layerRef, styleRef, showVar, hideVar, showDVar, hideDVar;
var srcOpen = '/contenido/i/open11x11.gif';
var srcClose = '/contenido/i/close11x11.gif';
var imageRef;
if (nn4) {
layerRef = "document.layers.";
styleRef = "";
imageRef = "";
showDVar = "'block'";
hideDVar = "'none'";
showVar = "'show'";
hideVar = "'hide'";
} else {
layerRef = "document.all.";
imageRef = "";
styleRef = ".style";
showDVar = "'block'";
hideDVar = "'none'";
showVar = "'visible'";
hideVar = "'hidden'";
}
if (dom) {
layerRef = "document.getElementById('";
styleRef = "').style";
imageRef = "')";
}
function changeDiv( divID ) {
if (eval(layerRef + 'slinks' + divID + styleRef + '.visibility') == 'hidden') {
showDiv(divID);
} else {
hideDiv(divID);
}
}
function showDiv( divID ) {
if (layerOk) {
eval(layerRef + 'slinks' + divID + styleRef + '.visibility=' + showVar);
eval(layerRef + 'slinks' + divID + styleRef + '.display=' + showDVar);
eval(layerRef + 'simg' + divID + imageRef + '.src = "' + srcClose + '"');
}
}
function hideDiv( divID ) {
if (layerOk) {
eval(layerRef + 'slinks' + divID + styleRef + '.visibility=' + hideVar);
eval(layerRef + 'slinks' + divID + styleRef + '.display=' + hideDVar);
eval(layerRef + 'simg' + divID + imageRef + '.src = "' + srcOpen + '"');
}
}
//-->
</script>
<fieldset>
<legend>������ � �������� (��������) �����<sup>1</sup></legend>
<table height="400" border=0>
<tr valign="top">
<td>
<form action="store_user_sections.html" method="POST">
<input type="submit" value="��������� ������" class="input_btn">
% my @sections = $luser->groups();
% my $sections_ = {};
% for my $secti (@sections) {
% $sections_->{$secti} = 1;
% my @trace = $keeper->get_section_by_id($secti)->trace();
% for my $traci (@trace) {
% next if (exists $sections_->{$traci});
% $sections_->{$traci} = 1;
% }
% }
% my @fullsections = keys(%{ $sections_ });
% my $root = $keeper->get_section_by_id(1);
<ul style="font-size:13px;font-family:Tahoma;">
% user_sections_tree($root, \@fullsections, \@sections, 0);
</ul>
<input type="hidden" name="login" value="<% $luser->login %>">
<input type="submit" value="��������� ������" class="input_btn">
</form>
</td>
</tr>
</table>
</fieldset>
<!-- ���������� -->
<fieldset>
<legend>����������</legend>
<table width="100%" cellspacing="5" cellpadding="0" class="tform" height="50">
<tr>
<th valign=top>1)</th>
<td width="100%">������ � ������ ������������� ���� ������ �� ���� �������� �������� ���� ������;<br></td>
</tr>
</table>
</fieldset>
<%args>
$luser => undef
</%args>
<%init>
return undef if !ref($luser);
return undef unless ($luser->{attributes}->{groups});
my $root_section = $keeper->get_section_by_id($Contenido::Section::ROOT || 1);
sub user_sections_tree
{
my ($sect, $fullsections, $sections, $depth) = @_;
my $count_checked = 0;
my @childs = $sect->childs(1);
if ($sect->id)
{
my $checked = (grep {$_ == $sect->{id} } @{ $sections }) ? ' checked' : '';
$count_checked++ if( grep {$_ == $sect->{id} } @{ $fullsections } );
if (@childs && $sect->id != 1) { $m->out("<a title=\"��������/�������\" style=\"width:22px;text-decoration:none;\" href=\"javascript:changeDiv('$sect->{id}');\"><img id=\"simg$sect->{id}\" src=\"/contenido/i/open11x11.gif\" width=\"11\" height=\"11\" border=\"0\"></a>"); }
else { $m->out( '<span style="width:22px;"></span>' ); }
$m->out("<input type=\"checkbox\" name=\"section_$sect->{id}\" value=\"1\" $checked>");
$m->out("$sect->{name}<br>\n");
}
if (@childs)
{
my $check_childs = undef;
if ($depth > 0) { $m->out( '<div style="visibility:hidden;display:none;" id="slinks'.$sect->id.'">'."\n" ); }
$m->out( '<ul>'."\n" );
foreach my $child_id (@childs)
{
my $child = $keeper->get_section_by_id($child_id);
$check_childs += user_sections_tree($child, $fullsections, $sections, $depth + 1);
}
$m->out("</ul>\n");
if ($depth > 0) { $m->out( '</div>'."\n" ); }
if ($check_childs > 0 && $sect->id != 1) { $m->out( "<script language=\"JavaScript\"><!--\nshowDiv('$sect->{id}');\n//-->\n</script>\n" ); }
}
return $count_checked;
}
</%init>
Небольшая справка по веткам
cnddist – контейнер, в котором хранятся все дистрибутивы всех библиотек и программных пакетов, которые использовались при построении различных версий Contenido. Если какой-то библиотеки в данном хранилище нет, инсталлятор сделает попытку "подтянуть" ее с веба (например, с CPAN). Если библиотека слишком старая, есть очень большая вероятность, что ее там уже нет. Поэтому мы храним весь хлам от всех сборок. Если какой-то дистрибутив вдруг отсутствует в cnddist - напишите нам, мы положим его туда.
koi8 – отмирающая ветка, чей код, выдача и все внутренние библиотеки заточены на кодировку KOI8-R. Вносятся только те дополнения, которые касаются внешнего вида и функционала админки, баги ядра, обязательные обновления портов и мелочи, которые легко скопипастить. В дальнейшем планируется полная остановка поддержки по данной ветке.
utf8 – актуальная ветка, заточенная под UTF-8.
Внутри каждой ветки: core – исходники ядра; install – скрипт установки инсталляции; plugins – плагины; samples – "готовые к употреблению" проекты, которые можно поставить, запустить и посмотреть, как они работают.