]> wagner.pp.ru Git - oss/stilllife.git/commitdiff
Решена проблема с PATH_TRANSLATED в Fedora: если путь в адресной строке
authorsafir <safir>
Sun, 16 Nov 2008 15:52:05 +0000 (15:52 +0000)
committersafir <safir>
Sun, 16 Nov 2008 15:52:05 +0000 (15:52 +0000)
браузера заканчивается символом '/', Apache дополняет путь именем файла,
указанного как индекс по умолчания. В частности - index.html. Для решения
проблемы добавил "отрезание" имени файла, если PATH_TRANSLATED указывает не
на директорию.

Решена проблема создания темы и форума с пустыми аннотациями. Для решения
проблемы заблокировал обращения к аннотации, если она не определена.

forum/forum

index a8fd425bdd215c564a2722bde18b66b23822154e..a1d613710cc5b4141d0b44fa857628f833ef84bc 100755 (executable)
@@ -1305,7 +1305,9 @@ sub new_topic {
                form_error($form,$cgi,$forum,"Некорректные символы в urlname.
                Допустимы только латинские буквы, цифры и минус") unless $urlname; 
        }
-       if (!-d $path_translated) {
+       if (!-d $path_translated &&
+               $path_translated=~s/^(.+)\/+[^\/]+$/$1/ &&
+                !-d $path_translated) {
                show_error($forum,"Операция $form может быть вызвана только со
                страницы форума");
        }       
@@ -1325,7 +1327,7 @@ sub new_topic {
        my $tree = gettemplate($forum,"topic",$url);
     # Заполнить название и аннотацию 
        my $abstract = input2tree($cgi,$forum,"abstract");
-       substinfo($tree,[_tag=>"meta","name"=>"description"],content=>$abstract->as_trimmed_text);
+       substinfo($tree,[_tag=>"meta","name"=>"description"],content=>$abstract->as_trimmed_text) if $abstract;
        substinfo($tree,[_tag=>"title"],_content=>$cgi->param("title"));
        my $subtree = $tree->look_down("class"=>"topic");
        my $creation_time=strftime("%d.%m.%Y %H:%M",localtime());
@@ -1336,7 +1338,7 @@ sub new_topic {
                        _content=>$creation_time);
                # Вставляем в страницу КОПИЮ аннотации, поскольку аннотация
                # нам еще понадобится в списке тем.
-               substinfo($subtree,["class"=>"abstract"],_content=>$abstract->clone);   
+               substinfo($subtree,["class"=>"abstract"],_content=>$abstract->clone) if $abstract;
                substitute_user_info($subtree,$forum);  
        } else {
                substinfo($tree,["class"=>"title"],
@@ -1388,7 +1390,9 @@ sub new_forum {
                form_error($form,$cgi,$forum,"Некорректные символы в urlname.
                        Допустимы только латинские буквы, цифры и минус") unless $urlname; 
        }
-       if (!-d $path_translated) {
+       if (!-d $path_translated &&
+               $path_translated=~s/^(.+)\/+[^\/]+$/$1/ &&
+                !-d $path_translated) {
                show_error($forum,"Операция $form может быть вызвана только со
                страницы форума");
        }       
@@ -1432,7 +1436,7 @@ sub new_forum {
        }
     # Заполнить название и аннотацию 
        my $abstract = input2tree($cgi,$forum,"abstract");
-       substinfo($tree,[_tag=>"meta","name"=>"description"],content=>$abstract->as_trimmed_text);
+       substinfo($tree,[_tag=>"meta","name"=>"description"],content=>$abstract->as_trimmed_text) if $abstract;
        substinfo($tree,[_tag=>"title"],_content=>$cgi->param("title"));
        my $subtree = $tree->look_down("class"=>"annotation")
                or show_error($forum,"В шаблоне форума отсутствует класс annotation");
@@ -1443,7 +1447,7 @@ sub new_forum {
                        _content=>$creation_time);
                # Вставляем в страницу КОПИЮ аннотации, поскольку аннотация
                # нам еще понадобится в списке тем.
-               substinfo($subtree,["class"=>"abstract"],_content=>$abstract->clone);   
+               substinfo($subtree,["class"=>"abstract"],_content=>$abstract->clone) if $abstract;
                substitute_user_info($subtree,$forum);  
        substinfo($subtree,[_tag=>"img","class"=>"logo"],
                src=> $logo_name, width=>$logo_width, height=>$logo_height);
@@ -1851,7 +1855,7 @@ sub topicedit {
                _content=>$cgi->param("title"));
                # Вставляем в страницу КОПИЮ аннотации, поскольку аннотация
                # нам еще понадобится в списке тем.
-               substinfo($subtree,["class"=>"abstract"],_content=>$abstract->clone);   
+               substinfo($subtree,["class"=>"abstract"],_content=>$abstract->clone) if $abstract;
        } else {
                substinfo($tree,["class"=>"title"],
                _content=>$cgi->param("title"));
@@ -1902,14 +1906,14 @@ sub forumedit {
        }
        my ($tree,$lockfd) = gettree($path_translated .  "/".$forum->{indexfile});      
        my $abstract = input2tree($cgi,$forum,"abstract");
-       substinfo($tree,[_tag=>"meta","name"=>"description"],content=>$abstract->as_trimmed_text);
+       substinfo($tree,[_tag=>"meta","name"=>"description"],content=>$abstract->as_trimmed_text) if $abstract;
        substinfo($tree,[_tag=>"title"],_content=>$cgi->param("title"));
        my $subtree = $tree->look_down("class"=>"annotation");
                substinfo($subtree,["class"=>"title"],
                _content=>$cgi->param("title"));
                # Вставляем в страницу КОПИЮ аннотации, поскольку аннотация
                # нам еще понадобится в списке тем.
-               substinfo($subtree,["class"=>"abstract"],_content=>$abstract->clone);   
+               substinfo($subtree,["class"=>"abstract"],_content=>$abstract->clone) if $abstract;
        substinfo($subtree,[_tag=>"img","class"=>"logo"],
                src=> $logo_name, width=>$logo_width, height=>$logo_height) 
                        if  defined($logo_name);