Line # Revision Author
1 8 ahitrov@rambler.ru <& "/contenido/components/title.msn", %ARGS &>
2 <table width="100%" cellspacing="10" cellpadding="0" border="0" style="background-color:#445D82;" class="tatop">
3 <tr>
4 <td><b>Редакторский интерфейс\
5 % if( $style ne 'index' ) {
6 :&nbsp; <a href="/contenido/">На главную</a>
7 % }
8 </b></td>
9 <td align="right"><b><a href="/" style="text-decoration:none;"><% $pn_name %><span style="background-color:#efefef;color:#000000;margin:2px;"> <% uc($pn_domen) %> </span></a></b></td>
10 </tr>
11 <tr>
12 <td>
13 % my @TABS = ();
14 % my @plugins = ($state->project, split(/\s+/, $state->plugins));
15 % my %plugins = map { lc($_) => 1 } @plugins;
16 % for my $tab_id (keys(%{ $toopi })) {
17 % my ($b1, $b2) = $tab_id eq $profile ? ('<b>', '</b>') : ('', '');
18 % if ($r->uri() =~ /keywords\.html$/ || ($r->uri =~ /^\/contenido\/(\w+)\//i && exists $plugins{lc($1)} ) ) {
19 % ($b1, $b2) = ('', '');
20 % }
21 % next if $tab_id eq 'admin' && !$user->check_group(1);
22 % push (@TABS, $b1.'<a href="/contenido/?set_context=profile-'.$tab_id.'">'.$toopi->{$tab_id}->{name}.'</a>'.$b2);
23 % }
24 <% join('&nbsp;|&nbsp', @TABS) %>\
25 % for my $plugin ($state->project, split(/\s+/, $state->plugins)) {
26 % my $l_plugin = lc($plugin);
27 % next if $state->{$l_plugin}->{contenido_notab};
28 % my $uri = "$plugin/";
29 % if ($plugin eq $state->project)
30 % {
31 % $plugin = $state->project_name;
32 % }
33 % my ($b1, $b2) = $r->uri =~ /^\/contenido\/(\w+)\//i && lc($1) eq $l_plugin ? ('<b>','</b>') : ('','');
34 &nbsp;|&nbsp;<a href="/contenido/<% $uri %>"><% $b1.$plugin.$b2 %></a>
35 % }
36 </td>
37 <td align="right">
38 <b>Пользователь:</b> <% $user->name() %> (<% $user->login() %>)
39 </td>
40 </tr>
41 </table>
42
43 <script>
44 <!--
45 function openWin(wUri, wName, wWidth, wHeight, wScroll, wMenu) {
46 var scrollBars = (wScroll!=0) ? 1 : 0;
47 var menuBars = (wMenu) ? 1 : 0;
48 var positionLeft = (screen.width - wWidth)/2;
49 var positionTop = (screen.height - wHeight)/2;
50 var myW = window.open(wUri,wName,'width='+wWidth+',height='+wHeight+',top='+positionTop+',left='+positionLeft+',location=0,menubar='+menuBars+',resizable=0,scrollbars='+scrollBars+',status=0,titlebar=0,toolbar=0,directories=0,hotkeys=0')
51 myW.focus();
52 }
53 -->
54 </script>
55 <%args>
56
57 $style => undef
58 $title => undef
59
60 </%args>
61 <%init>
62 my $pn = $state->project_name();
63 my ($pn_name, $pn_domen) = split(/\./, $pn);
64
65 my $toopi = $project->tabs();
66
67 my $profile = $m->comp('/contenido/components/context.msn', name => 'profile');
68
69 </%init>

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

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

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

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

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