Line # Revision Author
1 8 ahitrov@rambler.ru <html>
2 <head>
3 <META http-equiv="Content-Type" content="text/html; charset=UTF-8">
4 <style>
5 body {
6 background-color: #FFFFFF;
7 margin: 0px;
8 117 ahitrov font-family: Tahoma, Arial, sans-serif;
9 8 ahitrov@rambler.ru }
10 form {
11 margin: 0px;
12 padding: 0px;
13 }
14 input, select, textarea {
15 font-family: Tahoma, Arial, sans-serif;
16 font-size:9pt;
17 }
18 a {
19 color:#0000ee;
20 }
21 a:visited.v {
22 color:#0000ee;
23 }
24
25 fieldset {padding:6px;margin-bottom:10px;border:2px solid #8093B0;}
26 fieldset legend {font-size:8pt;font-weight:bold;font-family:Tahoma;padding:3px 6px 3px 6px;margin-bottom:6px;color:#ffffff;background-color:#8093B0;}
27 117 ahitrov
28 table { font-size:13px; }
29 input { font-size:12px; }
30 8 ahitrov@rambler.ru
31 117 ahitrov .tatop {font-size:11px;font-family:Tahoma;color:#ffffff;}
32 8 ahitrov@rambler.ru .tatop a {color:#ffffff;}
33 117 ahitrov .npath {font-size:11px;font-family:Tahoma;padding:8px;}
34 8 ahitrov@rambler.ru
35 117 ahitrov .textnorm { font-size:12px; font-family:Tahoma; }
36 8 ahitrov@rambler.ru .input_btn {background-color:#930300;color:#FFFFFF;height:2.4em;}
37
38 table.tlistdocs { margin-top:10px; margin-bottom:10px; border-right:1px solid #d9d9d9;border-bottom:1px solid #d9d9d9; }
39 table.tlistdocs td, table.tlistdocs th { border:1px solid #d9d9d9; border-right:0px; border-bottom:0px; }
40 117 ahitrov table.tlistdocs td {font-size:12px;font-family:Arial;}
41 8 ahitrov@rambler.ru table.tlistdocs table td {border:0px;}
42
43 table.tform th, table.tform td {
44 117 ahitrov font-size: 11px;
45 8 ahitrov@rambler.ru font-family: Tahoma;
46 text-align: left;
47 }
48
49 117 ahitrov th {font-size:11px;font-family:Tahoma;text-align:left;}
50 8 ahitrov@rambler.ru
51 117 ahitrov h5, .hdr5 {font-size:11px;font-family:Tahoma;font-weight:bold;padding-top:10px;padding-bottom:5px;}
52 8 ahitrov@rambler.ru
53 607 ahitrov .rem { color:gray; font-size:90%; padding:4px }
54 .err { color:red; font-size:90%; padding:4px }
55 8 ahitrov@rambler.ru .hiddensect { color:#909090; }
56 .hiddensect a { color:#909090; }
57
58 .btn {font-size:9pt;}
59
60 .bb {
61 border: solid 1px #000000;
62 }
63 .gb {
64 background-color: #D8D8D8;
65 }
66 .undo {
67 font-family: Tahoma;
68 font-size: 9pt;
69 background-color: #FFD8D8;
70 }
71 .link_string { font: 12px Tahoma; padding:5px 10px; border-bottom:1px solid gray; }
72 .link_string p { margin:0; padding:0; }
73 117 ahitrov
74 .mm_act { background:#d0d0d0; border-top:1px solid gray; border-right:1px solid gray; text-decoration:none; }
75 8 ahitrov@rambler.ru
76 </style>
77 <title>Редакторский интерфейс<% (length($title) > 0) ? " | $title" : "" %></title>
78 481 ahitrov <link rel="stylesheet" type="text/css" href="/contenido/i/js/jquery-ui-1.10.3.custom/css/flick/jquery-ui-1.10.3.custom.css" media="all" />
79 616 ahitrov <link rel="stylesheet" type="text/css" href="/contenido/i/js/context-menu/jquery.contextMenu.css" media="all" />
80 481 ahitrov <script language="javascript" type="text/javascript" src="/contenido/i/js/jquery-1.9.1.min.js"></script>
81 8 ahitrov@rambler.ru <% $m->comp_exists('/contenido/components/custom_head.msn') ? $m->comp('/contenido/components/custom_head.msn') : '' %>
82 <script language="javascript" type="text/javascript" src="/contenido/i/js/links.js"></script>
83 481 ahitrov <script language="javascript" type="text/javascript" src="/contenido/i/js/tinymce-3.5.11/jquery.tinymce.js"></script>
84 <script language="javascript" type="text/javascript" src="/contenido/i/js/jquery-ui-1.10.3.custom/jquery-ui-1.10.3.custom.min.js"></script>
85 616 ahitrov <script language="javascript" type="text/javascript" src="/contenido/i/js/context-menu/jquery.contextMenu.min.js"></script>
86 481 ahitrov % if ( @plugins ) {
87 % foreach my $plugin ( @plugins ) {
88 % my ($include_dir, $include_comp);
89 % if ( $plugin eq $state->project ) {
90 % $include_dir = $state->{mason_comp}.'/contenido/'.$plugin.'/components/';
91 % } else {
92 % $include_dir = $state->{plug_src}.'/'.$plugin.'/comps/contenido/'.$plugin.'/components/';
93 % }
94 % $include_comp = '/contenido/'.$plugin.'/components/title_inc.msn';
95 % if ( -e $include_dir && $m->comp_exists($include_comp) ) {
96 <& $include_comp &>
97 % }
98 % }
99 % }
100 8 ahitrov@rambler.ru <script language="javascript" type="text/javascript">
101 481 ahitrov <!--
102 8 ahitrov@rambler.ru var WYSIWYGControls = new Array();
103 var sDocumentClass;
104 var nDocumentID;
105 481 ahitrov $(document).ready(function() {
106 22 ahitrov@rambler.ru $('textarea.tinymce').tinymce({
107 // Location of TinyMCE script
108 481 ahitrov script_url : '/contenido/i/js/tinymce-3.5.11/tiny_mce.js',
109 22 ahitrov@rambler.ru
110 // General options
111 theme : "advanced",
112 plugins : "style,layer,table,advhr,advimage,advlink,inlinepopups,preview,media,contextmenu,paste,noneditable,visualchars,nonbreaking,template,advlist",
113 481 ahitrov // TinyMCE 4.x
114 //theme : "modern",
115 //plugins : "style,layer,table,hr,image,link,code,textcolor,preview,media,contextmenu,paste,noneditable,visualchars,nonbreaking,template,advlist",
116 22 ahitrov@rambler.ru
117 // Theme options
118 theme_advanced_buttons1 : "bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,formatselect,fontselect,fontsizeselect,|,forecolor,backcolor,|,undo,redo,|,preview,help,code",
119 theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,bullist,numlist,|,outdent,indent,blockquote,|,link,unlink,anchor,image,|,tablecontrols",
120 theme_advanced_buttons3 : "cleanup,removeformat,visualaid,|,sub,sup,|,charmap,media,hr,advhr,|,insertlayer,moveforward,movebackward,absolute,|,styleprops,|,visualchars,nonbreaking",
121 theme_advanced_toolbar_location : "top",
122 theme_advanced_toolbar_align : "left",
123 theme_advanced_statusbar_location : "bottom",
124 theme_advanced_resizing : true,
125
126 convert_urls : false,
127
128 269 ahitrov extended_valid_elements : "iframe[src|width|height|name|align|noresize|scrolling|frameBorder|marginWidth|marginHeight],form[action|method|target|enctype|name|id|onSubmit]",
129 23 ahitrov@rambler.ru
130 22 ahitrov@rambler.ru paste_create_paragraphs : false,
131 paste_create_linebreaks : false,
132 paste_auto_cleanup_on_paste : true,
133 paste_convert_middot_lists : false,
134
135 // Example content CSS (should be your site CSS)
136 //content_css : "css/content.css",
137
138 // Drop lists for link/image/media/template dialogs
139 //template_external_list_url : "lists/template_list.js",
140 //external_link_list_url : "lists/link_list.js",
141 //external_image_list_url : "lists/image_list.js",
142 //media_external_list_url : "lists/media_list.js"
143 external_image_list_url : "/contenido/image_list.js?class=" + sDocumentClass + "&id=" + nDocumentID
144
145 });
146 });
147 607 ahitrov function getCookie(name) {
148 var matches = document.cookie.match(new RegExp(
149 "(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"
150 ));
151 return matches ? decodeURIComponent(matches[1]) : undefined;
152 }
153 function setCookie(name, value, options) {
154 options = options || {};
155 8 ahitrov@rambler.ru
156 607 ahitrov var expires = options.expires;
157
158 if (typeof expires == "number" && expires) {
159 var d = new Date();
160 d.setTime(d.getTime() + expires * 1000);
161 expires = options.expires = d;
162 }
163 if (expires && expires.toUTCString) {
164 options.expires = expires.toUTCString();
165 }
166
167 value = encodeURIComponent(value);
168
169 var updatedCookie = name + "=" + value;
170
171 for (var propName in options) {
172 updatedCookie += "; " + propName;
173 var propValue = options[propName];
174 if (propValue !== true) {
175 updatedCookie += "=" + propValue;
176 8 ahitrov@rambler.ru }
177 607 ahitrov }
178 8 ahitrov@rambler.ru
179 607 ahitrov document.cookie = updatedCookie;
180 8 ahitrov@rambler.ru }
181 481 ahitrov //-->
182 8 ahitrov@rambler.ru </script>
183 </head>
184 <body>
185
186 <%args>
187
188 $style => undef
189 $title => undef
190
191 </%args>
192 <%init>
193 481 ahitrov
194 8 ahitrov@rambler.ru my $pn = $state->project_name();
195 my ($pn_name, $pn_domen) = split(/\./, $pn);
196 481 ahitrov
197 my @plugins = ($state->project, split(/\s+/, $state->plugins));
198
199 8 ahitrov@rambler.ru </%init>

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

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

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

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

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