Revision 296 (by ahitrov, 2013/03/26 17:59:01) Promosite (anthill) project source
% if ( $m->comp_exists ("/comps/$prj/header.msn") ) {
<& "/comps/$prj/header.msn", alias => 'main' &>
% } else {
<& "/comps/header_rambler.msn", alias => 'main' &>
% }


<table class="r--main">
<tr>
<td class="dev--left-10"><div class="dev--left-10"><!-- --></div></td>
<td class="dev--left-menu r--vtop">
<div class="dev--left-menu"><!-- --></div>

<& "/comps/$prj/menus.msn", s => $s, id => $id &>
<br>
</td>
<td class="dev--left-25"><div class="dev--left-25"><!-- --></div></td>
<td class="r--vtop r--normal">

% if ( $id && ref $document ) {
<h1><% $section->name %></h1>
% } else {
<h1><% $profile->header %></h1>
<p><& /inc/text_format.msn, doc => $profile, field => 'abstr' &></p>
% }

<script type="text/javascript">
<!--
function check_fields ( oForm ) {

  if (!oForm.name.value) {
	alert ('Необходимо указать имя');
	return false;
  }
  if (!oForm.lastname.value) {
	alert ('Необходимо указать фамилию');
	return false;
  }
  var email = oForm.email.value;
  if ( !email ) {
	alert ('Необходимо указать электронный адрес');
	return false;
  }
  if ( email.indexOf('@') == -1 || email.indexOf('.') == -1 ) {
	alert ('Указан неверный электронный адрес');
	return false;
  }
  if (!oForm.question.value) {
	alert ('Необходимо заполнить поле вопроса');
	return false;
  }
  var Question = $('#question').attr('value');
  $('#feedbackcontainer').load('./ajax/feedback.html', {
		'name': $('#name').attr('value'),
		'lastname': $('#lastname').attr('value'),
		'email': $('#email').attr('value'),
		'job': $('#job').attr('value'),
		'position': $('#position').attr('value'),
		'doc_id': $('#doc_id').attr('value'),
		'filled': $('#filled').attr('value'),
		'question': Question
	});
  return false;
}
//-->
</script>


<div id="mailform" class="hidden" onmouseover="javascript:showObject(mailform)">
<h2 class="mb10 mt10">Обратная связь</h2>
<u class=uTop><i class=uLft><!-- --></i><i class=uRgt><!-- --></i></u>
<div id="feedbackcontainer" class="grayBg">

<& "/comps/$prj/feedback_form.msn", id => $id, ajax => 1 &>

</div>
<u class="uBtm"><i class="uLft"><!-- --></i><i class="uRgt"><!-- --></i></u>
<div class="mt30"></div>
</div>


% if ( $id && ref $document ) {
<%doc>
<h1 class="mt30"><% $section->name %></h1>
<ul>
<li>Интеграция ID
<li>Rambler ID и OpenID
<li>Безопасность авторизации
</ul>
</%doc>

<h2 class="mb10"><% $document->name %></h2>

<& /inc/text_format.msn, doc => $document &>
% }

<div class="dev--content"><!-- --></div>

</td>
</tr>
</table>


% ### Футер
% ##############################################
% if ( $m->comp_exists ("/comps/$prj/footer.msn") ) {
<& "/comps/$prj/footer.msn" &>
% } else {
<& "/comps/footer_rambler.msn" &>
% }
% ### /Футер
<%args>

	$id     => undef

</%args>
<%init>

  my $prj = $request->{project};
  my $profile = $request->{project_profile};
  my $root = $request->{project_section};
  &abort404     if $id && $id !~ /^\d+$/;

  my $subsections = $request->{subsections};
  my ($section, $s, $doclist);

  my $document;
  if ( $id && ref $subsections eq 'ARRAY' ) {
	my @sids = map { $_->id } @$subsections;
	if ( @sids ) {
		$document = $keeper->get_document_by_id ( $id,
			s	=> \@sids,
			class	=> 'promosuite::Article',
			status	=> 1,
		);
	}
	&abort404	unless ref $document;
	($section) = grep { my $sec = $_->id; grep { $_ == $sec } $document->sections } @$subsections;
	$s = $section->id;
  }

</%init>

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

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

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

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

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