Главная | Разделы | Поиск | Группы | Чат | Видео | Фото | Блоги | Помощь



Здравствуйте, гость. Пожалуйста войдите или Зарегистрируйтесь (забыл пароль)
Логин:
Пароль:





Пользователей: 29
Новичок:
Althea
Сейчас на сайте: 2
Сообщений: 21
Тем: 41
Разделов: 50
Статистика
О проекте

Новое в блогах:
" satan666 98 "
" satan666 97 "
" satan666 96 "
" satan666 95 "
" satan666 94 "
" satan666 93 "
" satan666 92 "
" satan666 91 "
" satan666 90 "
" satan666 89 "
Остальные
Новый контент:
"satan666 129"
"satan666 128"
"satan666 125"
"satan666 124"
"satan666 123"
"satan666 122"
"satan666 121"
"satan666 120"
"satan666 119"
"satan666 118"
Остальные
Новые разделы:
"satan666 251" by ProFTP
"satan666 250" by ProFTP
"satan666 249" by ProFTP
"satan666 248" by ProFTP
"satan666 247" by ProFTP
"satan666 246" by ProFTP
"satan666 245" by ProFTP
"satan666 244" by ProFTP
"satan666 243" by ProFTP
"satan666 235" by ProFTP
Остальные



Новые фотографии:
Рейтинг фотографий

Новые видео клипы:
Рейтинг видео клипов



Навигационная панель

В чате сейчас: 0 человек >>

Сообщений без ответа: 0 >>

Дополнительные функции доступные только зарегистрированным пользователям!


Новости и важные обсуждения

Идея групп (клубов, социальных сетей) >>

Чат (функциональность, технологии) >>

Новости проекта, разработки

Знакомства (движок, компонент, пример) >>

Панель





Просмотр темы

Главная --> Компьютеры --> Интернет --> Программирование --> PERL --> MVC Catalyst -->
       Следующий контент »
На уровень выше Посмотреть подразделы


Тема: catalyst не видит путь        (Просмотров: 6541)
Автор: ProFTP
Дата: 1265302088
Новое: 1270872525
Посмотреть комментарии этой темы


catalyst не видит путь

подскажите, почему каталист может не видеть путь например http://localhost:3000/photo/view/34/170/page/4 photo/view/34/170/page/4 контроллер photo.pm вот Code: sub view_pages_photo : Regex('^view\/(\d+)\/(\d+)\/page\/(\d+)$') { my ( $self, $c, $album, $photo, $view, $page ) = @_; $c->stash->{page_cm} = $c->req->captures->[2]; $c->forward( 'view', [ $c->req->captures->[0], $c->req->captures->[1] ] ); } просто выдает белую страницу с текстом Page not found БЕЗ каких либо ошибок в отладке такой путь работат photo/view/34/170 Code: sub view : Local : Args(2) { my ( $self, $c, $album, $photo ) = @_; а такой тоже не работает, в 3 парамтера photo/view/34/170/4 Code: sub view_privat_page : Path('/view_privat') : Args(3) { my ( $self, $c, $album, $photo, $page ) = @_; что за прикол? красиво нельзя исправить? а то если руками исправлять, то вся мощ фремворка терятеся... ================== сделал так, не знаю на сколько это правильно Code: use Quantum::Superpositions; sub begin : Private { my ( $self, $c ) = @_; .................... if ( !$c->request->{match} ) { if ($c->request->{arguments}->[0] eq 'photo' && $c->request->{arguments}->[1] eq any( qw( view view_privat view_privat_max view_max ) ) && scalar @{$c->request->{arguments}} == 5) { $c->forward( 'MyApp::Controller::'.$c->request->{arguments}->[0], $c->request->{arguments}->[1], [ $c->request->{arguments}->[2], $c->request->{arguments}->[3], $c->request->{arguments}->[4] ] ); $c->detach(); } } ================== вот пример Code: sub view_page : Path('/view') : Args(3) { my ( $self, $c, $album, $photo, $page ) = @_; ................... путь для него .photo/view/34/170/4 (внизу отладка при страте каталиста) Code: package MyApp::Controller::photo; use strict; use warnings; use parent 'Catalyst::Controller'; use File::Path qw(make_path remove_tree); =head1 NAME MyApp::Controller::photo - Catalyst Controller =head1 DESCRIPTION Catalyst Controller. =head1 METHODS forwarded from view_content void *index_off_foreach */photo/content/$id void *index_off void *index_off_foreach */photo/last/$id_un/$id void *index_off void *index_off_foreach =cut =head2 detailed information for developers: WWW: http://www.x0.org.ua/help it is architecture of classes, methods, program events... =cut # ## from profile sub view_profile sub count_photo_album_users : Privat { my ( $self, $c, $id_un ) = @_; my $user = 'SELECT count(*) FROM photo_albums AS t1 WHERE t1.privat_pa = 1 AND id_un = '.$id_un; return $c->model('DBI')->dbh->selectrow_array($user); } sub photo_content_limit : Privat { my ( $self, $c, $id_co ) = @_; $c->stash->{forward_sql_p} = ' SELECT t1.id_co, t1.id_pa, t1.id_un, t1.name_pa, t1.description_pa, t1.hidden_pa, t1.created, t1.privat_pa, t4.username, (SELECT count(*) FROM photo_files AS t5 WHERE t1.id_pa = t5.id_pa ) AS count_photo_files, (SELECT SUM(t6.size_pf) FROM photo_files AS t6 WHERE t1.id_pa = t6.id_pa ) AS sum_v_photo_files, (SELECT min(t7.id_pf) FROM photo_files AS t7 WHERE t1.id_pa = t7.id_pa AND t7.size_pf is NOT NULL AND t7.size_pf > 0 ) AS min_v_photo_files FROM photo_albums AS t1 LEFT JOIN users AS t4 ON t1.id_un = t4.id WHERE t1.id_co = ' . $id_co . ' AND t1.privat_pa = 0 ORDER BY t1.created desc LIMIT 4'; my $loop_data = $c->model('DBI') ->dbh->selectall_arrayref( $c->stash->{forward_sql_p}, { Slice => {} } ); # surplus, and conclusion in 4 columns $c->forward( 'index_off_foreach', [$loop_data] ); # if ($loop_data); } sub content : Local { my ( $self, $c, $id_co, $id ) = @_; $c->stash->{template} = 'photo_content.tt'; if ( $id_co !~ /^\d+$/ ) { $c->stash( no_id_co => 1, off_photo => 1, ); $c->detach(); } ## terms of query for current content my $sql; if ( !$c->check_user_roles('moder_se') && $c->user_exists() == 1 ) { $sql = 'AND (( t1.hiden_co = 0 AND t1.active_co = 1) OR t1.id_un = ' . $c->user->{user}->{id} . ')'; } elsif ( $c->check_user_roles('moder_se') ) { $sql = ''; } elsif ( $c->user_exists() == 0 ) { $sql = 'AND t1.active_co = 1 AND t1.hiden_co = 0 AND t1.hiden_g_co = 0'; } else { $c->response->redirect( $c->uri_for('/') ); $c->detach(); } my $sql_content = 'SELECT t1.id_co, t1.id_un, t1.id_se, t1.name_co, t1.heading_name_co, t1.keys_co, t1.text_co, t1.active_co, t1.hiden_co, t1.hiden_g_co, t1.close_co, t1.voting_co, t1.vo_all_co, t1.vo_balls_co, t1.vo_per, t1.created, t1.viewing, t1.modified, t1.forbi_comm_co, t2.name_se, t2.forbi_content_se, t2.hiden_g_co AS hiden_g_se, t2.active_se, t2.id_un AS id_un_par, t3.username FROM content AS t1 LEFT JOIN section AS t2 ON t1.id_se = t2.id_se LEFT JOIN users AS t3 ON t1.id_un = t3.id WHERE t1.id_co = ' . $id_co . ' ' . $sql . ' LIMIT 1'; my $loop_data2 = $c->model('DBI')->dbh->selectrow_hashref($sql_content); # rights for access, content if ( !$loop_data2 ) { $c->stash( messages_error => 1, off_photo => 1, ); $c->detach(); } if ( $loop_data2->{hiden_g_se} == 1 && !$c->user_exists() ) { $c->stash( error_hiden_g => 1, off_photo => 1, ); $c->detach(); } if ( $loop_data2->{active_se} == 0 && $loop_data2->{id_un_par} != $c->user->{user}->{id} && !$c->check_user_roles('moder_co') ) { $c->stash( error_active_se => 1, off_photo => 1, ); $c->detach(); } # warned reports for the author of information if ( ( $c->user_exists() && $loop_data2->{id_un} == $c->user->{user}->{id} ) || $c->check_user_roles('moder_co') ) { $c->stash->{edit_pa} = 1; } $c->stash($loop_data2); $c->stash->{forward_sql3} = ' WHERE t1.id_co = ' . $id_co . ' AND t1.privat_pa = 0 '; $c->stash->{forward_sql_p} = ' SELECT t1.id_co, t1.id_pa, t1.id_un, t1.name_pa, t1.description_pa, t1.hidden_pa, t1.created, t1.privat_pa, t4.username, (SELECT count(*) FROM photo_files AS t5 WHERE t1.id_pa = t5.id_pa ) AS count_photo_files, (SELECT SUM(t6.size_pf) FROM photo_files AS t6 WHERE t1.id_pa = t6.id_pa ) AS sum_v_photo_files, (SELECT min(t7.id_pf) FROM photo_files AS t7 WHERE t1.id_pa = t7.id_pa AND t7.size_pf is NOT NULL AND t7.size_pf > 0 ) AS min_v_photo_files FROM photo_albums AS t1 LEFT JOIN users AS t4 ON t1.id_un = t4.id ' . $c->stash->{forward_sql3} . ' ORDER BY t1.created desc LIMIT ?,?'; # URL pages $c->stash->{forward_url} = '/photo/content/' . $id_co . '/'; $c->forward( 'index_off', [$id] ); } sub last : Local { my ( $self, $c, $id_un, $id ) = @_; $c->stash->{template} = 'photo.tt'; $c->stash->{current_last} = 1; $c->stash->{id_un} = $id_un; # all last photos are albums of user if ( $id_un !~ /^\d+$/ ) { $c->stash( no_user_id => 1, off_photo => 1, ); $c->detach(); } # access to private information # is settled access: if the session of user private and if he looks the information my $user = $c->forward( qw /MyApp::Controller::friends found_users/, [ $id_un ] ); my $friends = $c->user_exists() && $c->forward( qw /MyApp::Controller::friends found_friends/, [ $id_un, $c->user->{user}->{id} ] ); # if !let_look_profile && !friends && ! if ( ( ( $c->user_exists() && $id_un != $c->user->{user}->{id} ) && !$friends && ( $user && $user->{let_look_profile} == 0 ) ) && !$c->check_user_roles('moder_co') ) { $c->stash( no_user_privat_friends => 1, off_photo => 1, ); $c->detach(); } # if !friends or or etc if ( (!$c->user_exists() && $user->{let_look_profile} == 0 ) || ( ( $c->user_exists() && $id_un != $c->user->{user}->{id} ) && !$friends && ( $user && $user->{let_look_profile} == 0 ) ) && !$c->check_user_roles('moder_co') ) { $c->stash( no_user_privat => 1, off_photo => 1, ); $c->detach(); } # access to information # is settled access: if the session of user private and if he looks the information =dffdg if ( $id_un !~ /^\d+$/ || ( !$c->user_exists() || $id_un != $c->user->{user}->{id} ) && !$c->check_user_roles('moder_co') ) { $c->stash( no_user_privat => 1, off_photo => 1, ); $c->detach(); } =cut # URL pages $c->stash->{forward_sql3} = ' LEFT JOIN content AS t2 ON t1.id_co = t2.id_co LEFT JOIN section AS t3 ON t2.id_se = t3.id_se WHERE t1.id_un = ' . $id_un; $c->stash->{forward_sql_p} = 'SELECT t1.id_co, t1.id_pa, t1.id_un, t1.name_pa, t1.description_pa, t1.hidden_pa, t1.created, t1.privat_pa, t2.name_co, t2.active_co, t2.hiden_co, t2.hiden_g_co, t2.close_co, t3.hiden_g_co AS hiden_g_se, t3.active_se, t4.username, (SELECT count(*) FROM photo_files AS t5 WHERE t1.id_pa = t5.id_pa ) AS count_photo_files, (SELECT SUM(t6.size_pf) FROM photo_files AS t6 WHERE t1.id_pa = t6.id_pa ) AS sum_v_photo_files, (SELECT min(t7.id_pf) FROM photo_files AS t7 WHERE t1.id_pa = t7.id_pa AND t7.size_pf is NOT NULL AND t7.size_pf > 0 ) AS min_v_photo_files FROM photo_albums AS t1 LEFT JOIN users AS t4 ON t1.id_un = t4.id ' . $c->stash->{forward_sql3} . ' ORDER BY t1.created desc LIMIT ?,?'; $c->stash->{forward_url} = '/photo/last/' . $id_un . '/'; $c->forward( 'index_off', [$id] ); } sub privat : Local { my ( $self, $c, $id_un, $id ) = @_; $c->stash->{template} = 'photo.tt'; $c->stash->{current_privat} = 1; $c->stash->{id_un} = $id_un; # use Data::Dumper; # print Dumper($c->user); if ( $id_un !~ /^\d+$/ ) { $c->stash( no_user_id => 1, off_photo => 1, ); $c->detach(); } # access to private information # is settled access: if the session of user private and if he looks the information my $user = $c->forward( qw /MyApp::Controller::friends found_users/, [ $id_un ] ); my $friends = $c->user_exists() && $c->forward( qw /MyApp::Controller::friends found_friends/, [ $id_un, $c->user->{user}->{id} ] ); # if !let_look_profile && !friends && ! if ( ( ( $c->user_exists() && $id_un != $c->user->{user}->{id} ) && !$friends && ( $user && $user->{let_look_profile} == 0 ) ) && !$c->check_user_roles('moder_co') ) { $c->stash( no_user_privat_friends => 1, off_photo => 1, ); $c->detach(); } # print $user->{let_look_profile}; # if !friends or or etc if ( (!$c->user_exists() && $user->{let_look_profile} == 0 ) || ( ( $c->user_exists() && $id_un != $c->user->{user}->{id} ) && !$friends && ( $user && $user->{let_look_profile} == 0 ) ) && !$c->check_user_roles('moder_co') ) { $c->stash( no_user_privat => 1, off_photo => 1, ); $c->detach(); } =dfdf if ( $id_un !~ /^\d+$/ || !$c->user_exists() || ( $id_un != $c->user->{user}->{id} && !$c->forward( qw /MyApp::Controller::friends found_friends/, [ $id_un, $c->user->{user}->{id} ] ) ) && !$c->check_user_roles('moder_co') ) { $c->stash( no_user_privat => 1, off_photo => 1, ); $c->detach(); } =cut $c->stash->{forward_sql3} = ' WHERE t1.id_un = ' . $id_un . ' AND t1.privat_pa = 1 '; $c->stash->{forward_sql_p} = ' SELECT t1.id_co, t1.id_pa, t1.id_un, t1.name_pa, t1.description_pa, t1.hidden_pa, t1.created, t1.privat_pa, t4.username, (SELECT count(*) FROM photo_files AS t5 WHERE t1.id_pa = t5.id_pa ) AS count_photo_files, (SELECT SUM(t6.size_pf) FROM photo_files AS t6 WHERE t1.id_pa = t6.id_pa ) AS sum_v_photo_files, (SELECT min(t7.id_pf) FROM photo_files AS t7 WHERE t1.id_pa = t7.id_pa AND t7.size_pf is NOT NULL AND t7.size_pf > 0 ) AS min_v_photo_files FROM photo_albums AS t1 LEFT JOIN users AS t4 ON t1.id_un = t4.id ' . $c->stash->{forward_sql3} . ' ORDER BY t1.created desc LIMIT ?,?'; # URL pages $c->stash->{forward_url} = '/photo/privat/' . $id_un . '/'; $c->forward( 'index_off', [$id] ); } sub index_pages_photo : Path('/photo') : Args(1) { my ( $self, $c, $id, ) = @_; $c->stash->{template} = 'photo.tt'; $c->forward( 'index_photo', [$id] ); } sub index_photo : Path('/photo') : Args(0) { my ( $self, $c, $id ) = @_; $c->stash->{template} = 'photo.tt'; $c->stash->{current_view} = 1; if ( $c->user_exists() == 0 ) { $c->stash->{forward_sql3} = ' LEFT JOIN content AS t2 ON t1.id_co = t2.id_co LEFT JOIN section AS t3 ON t2.id_se = t3.id_se WHERE t2.hiden_g_co = 0 AND t2.hiden_co = 0 AND t2.active_co = 1 AND t3.active_se = 1 AND t3.hiden_g_co = 0 '; } if ( !$c->check_user_roles('moder_se') && $c->user_exists() == 1 ) { $c->stash->{forward_sql3} = ' LEFT JOIN content AS t2 ON t1.id_co = t2.id_co LEFT JOIN section AS t3 ON t2.id_se = t3.id_se WHERE (( t2.hiden_co = 0 AND t2.active_co = 1) OR t2.id_un = ' . $c->user->{user}->{id} . ') AND (t3.active_se = 1 OR t3.id_un = ' . $c->user->{user}->{id} . ')'; } if ( $c->check_user_roles('moder_co') ) { $c->stash->{forward_sql3} = ' LEFT JOIN content AS t2 ON t1.id_co = t2.id_co LEFT JOIN section AS t3 ON t2.id_se = t3.id_se '; } $c->stash->{forward_sql_p} = 'SELECT t1.id_co, t1.id_pa, t1.id_un, t1.name_pa, t1.description_pa, t1.hidden_pa, t1.created, t1.privat_pa, t2.name_co, t2.active_co, t2.hiden_co, t2.hiden_g_co, t2.close_co, t3.hiden_g_co AS hiden_g_se, t3.active_se, t4.username, (SELECT count(*) FROM photo_files AS t5 WHERE t1.id_pa = t5.id_pa ) AS count_photo_files, (SELECT SUM(t6.size_pf) FROM photo_files AS t6 WHERE t1.id_pa = t6.id_pa ) AS sum_v_photo_files, (SELECT min(t7.id_pf) FROM photo_files AS t7 WHERE t1.id_pa = t7.id_pa AND t7.size_pf is NOT NULL AND t7.size_pf > 0 ) AS min_v_photo_files FROM photo_albums AS t1 LEFT JOIN users AS t4 ON t1.id_un = t4.id ' . $c->stash->{forward_sql3} . ' ORDER BY t1.created desc LIMIT ?,?'; # URL pages $c->stash->{forward_url} = '/photo/'; # if ($c->stash->{forward_url}); $c->forward( 'index_off', [$id] ); } ### ### END Dispatcher from photo* to index : Privat ### sub index_off : Privat { my ( $self, $c, $id ) = @_; if ( $id && $id !~ /^\d+$/ ) { $c->stash( error_online_or_id => 1, off_form => 1 ); $c->detach(); } # count of totally of units, for a paginal conclusion my $max_count = 'SELECT count(*) FROM photo_albums AS t1 ' . $c->stash->{forward_sql3}; my $count = $c->model('DBI')->dbh->selectrow_array($max_count); # $c->stash->{forward_url} generation of paginal conclusion my ( $count_limit, $page, $max_page ) = $c->model('DBI') ->build_pages( $c->stash->{forward_url}, $count, $id, undef, 12 ); $c->stash->{page} = $page if ($page); # $c->stash->{forward_sql_p} SQL my $loop_data = $c->model('DBI')->dbh->selectall_arrayref( $c->stash->{forward_sql_p}, { Slice => {} }, $count_limit, $max_page ); # surplus, and conclusion in 4 columns $c->forward( 'index_off_foreach', [$loop_data] ); # if ($loop_data); } sub index_off_foreach : Privat { my ( $self, $c, $loop_data ) = @_; # surplus, and conclusion in 4 columns if ( @{$loop_data} ) { foreach $_ ( @{$loop_data} ) { $_->{sum_v_photo_files} = sprintf( '%.1f', $_->{sum_v_photo_files} / 1048576 ) if ( $_->{sum_v_photo_files} ); $_->{see} = 1 if ( $_->{id_pa} ); $_->{username} = 'Guest' if ( !$_->{username} ); if ( ( $c->user_exists() && $_->{id_un} == $c->user->{user}->{id} ) || $c->check_user_roles('moder_co') ) { $_->{delete_pa} = 1; $_->{edit_pa} = 1; } } # in 4 columns $c->stash->{photo_album} = $c->model('DBI')->col_array($loop_data); } } ### ### END Dispatcher ### sub add_privat : Local : Args(1) { my ( $self, $c, $id ) = @_; $c->stash->{privat} = 1; $c->forward( 'add', [ $id, 1 ] ); } sub add : Local : Args(1) { my ( $self, $c, $id, $privat ) = @_; $c->stash->{template} = 'add_photo.tt'; if ( !MyApp->config->{log}->{photo_files_upload_on} ) { $c->stash( error_upload_off => 1, off_form => 1 ); $c->detach(); } # print MyApp->config->{setting}->{photos_dir}; if ( !$c->user_exists() || $id !~ /^\d+$/ ) { $c->stash( error_online_or_id => 1, off_form => 1 ); $c->detach(); } # selection of sql at: # $privat selection of photo of album: his proprietor, ID and names, verification of privat or not privat # !$privat selection of photo of album: his proprietor, ID and names, also selection of content: # ID of content, name, closed or opened # return of hash_ref my $loop = $c->forward( 'select_pa', [ $id, $privat ] ); # treatment hash_ref # conclusion of error of vital error, and conclusion of hash_ref in a template # return of id_pa photo of album my $id_pa = $c->forward( 'check_pa_acl', [ $loop, $privat ] ); $c->request->parameters->{form_submit} ||= ''; ## <input type="hidden" name="form_submit" value="yes"> # if load of picture from a form if ( $c->request->parameters->{form_submit} eq 'yes' ) { # $CGI::POST_MAX = 444; # $c->request->params->{name_pf} ||= ''; # $c->request->params->{description_pf} ||= ''; $c->request->params->{quality} ||= ''; $c->request->params->{geometry} ||= ''; my $f = $c->model('ExtraDBI')->new; if ( $c->request->params->{description_pf} ) { $c->request->params->{description_pf} = $c->model('BBcode')->input_bb( $c->request->params->{description_pf}, [ 'url' ] ); $c->request->params->{description_pf} = $f->addition( 'description_pf', $c->request->params->{description_pf} )->out; } $c->request->params->{name_pf} = $f->head_text( 'name_pf', $c->request->params->{name_pf} )->out if ( $c->request->params->{name_pf} ); # verification of maximally possible loads from an user if ( !$c->check_user_roles('moder_co') && MyApp->config->{log}->{photo_files_max_limit} < $c->model('DBI')->select_log( ['3', $c->user->{user}->{id}, $c->request->address || undef, $c->request->header('X-Forwarded-For') || undef, time - MyApp->config->{log}->{photo_files_max_limit_time}] ) ) { $c->stash( limit_max_uload => 1, max_limit => MyApp->config->{log}->{photo_files_max_limit}, max_time => MyApp->config->{log}->{photo_files_max_limit_time} / 60 , off_form => 1 ); $c->detach(); } my $id_pf; my $file; my $file_thumbnail; my $dir; my $dir_thumbnail; # account of amount of the loaded files loaded # to control the maximally possible amount of loads $c->model('DBI')->insert_log([ 3, $c->user->{user}->{id}, time, $c->request->address || undef, $c->request->header('X-Forwarded-For') || undef ]) if ( !$c->check_user_roles('moder_co') ); if ( my $upload = $c->request->upload('field') ) { if ($upload->is_image) { # $id_pa, $name_pf, $description_pf # we insert the photos of files given in a table, #to define ID and create a file with the same ID... $id_pf = $c->forward( 'insert_photo', [ $id_pa, $c->request->params->{name_pf}, $c->request->params->{description_pf} ] ); $dir = MyApp->config->{setting}->{photos_dir} . '' . $id_pa; $file = $dir . '/' . $id_pf . '.jpg'; $dir_thumbnail = $dir . '/thumbnail'; $file_thumbnail = $dir_thumbnail . '/' . $id_pf . '.jpg'; make_path( $dir, { mode => 0750 } ) unless ( -d $dir ); make_path( $dir_thumbnail, { mode => 0750 } ) unless ( -d $dir_thumbnail ); unless ( $upload->link_to($file) || $upload->copy_to($file) ) { die("Failed to copy '$file' to '$file': $!"); } my $size = ( stat($file) )[7]; # if max photo 5-7Mb, to delete... if (7000000 < $size) { remove_tree( $file ); $c->stash->{error_upload_big_image} = 1; $c->detach(); } # did simpler and more transparent (but not very much beautifully) } else { $c->stash->{error_upload_no_image} = 1; $c->detach(); } } else { $c->stash->{error_upload_no_image} = 1; $c->detach(); } my ( $ox, $oy ); # Smoothing for X and Y to the standard size, #if a mark is included for this purpose ( $ox, $oy ) = $c->model('Image')->thumbnail( MyApp->config->{setting}->{x}, MyApp->config->{setting}->{y}, $file, undef, $c->request->params->{quality} ) if ( $c->request->params->{geometry} ); # we change quality, if a mark is included for this purpose $c->model('Image')->convert_quality( $file, 1 ) if ( $c->request->params->{quality} && !$c->request->params->{geometry} ); # thumbnail $c->model('Image') ->thumbnail( '150', '150', $file, $file_thumbnail, $c->request->params->{geometry} ); # if we did not change geometry - it is needed to know final X and Y of picture ( $ox, $oy ) = $c->model('Image')->get_width_height($file) if ( !$ox || !$oy ); my $size = ( stat($file) )[7]; # we add information about a photo file, because we did INSERT to get correct future ID $c->model('DBI')->dbh->do( qq{UPDATE photo_files SET size_pf = ?, x_pf = ?, y_pf = ? WHERE id_pf = ?}, undef, $size, $ox, $oy, $id_pf ); $c->stash->{quality} = 1 if ( $c->request->params->{quality} eq 'on' ); $c->stash->{geometry} = 1 if ( $c->request->params->{geometry} eq 'on' ); $c->stash->{added_photo} = 1; } } sub view_max : Local : Args(2) { my ( $self, $c, $album, $photo ) = @_; $c->stash->{maximally_view} = 1; $c->forward( 'view', [ $album, $photo ] ); } sub view_privat_max : Local : Args(2) { my ( $self, $c, $album, $photo ) = @_; $c->stash->{maximally_view} = 1; $c->forward( 'view_privat', [ $album, $photo ] ); } sub view_privat_page : Path('/view_privat') : Args(3) { my ( $self, $c, $album, $photo, $page ) = @_; $c->stash->{page_cm} = $page; $c->forward( 'view_privat'. [ $album, $photo ] ); } sub view_privat : Local : Args(2) { my ( $self, $c, $album, $photo ) = @_; $c->stash->{template} = 'view_photo_privat.tt'; if ( !$c->user_exists() || $album !~ /^\d+$/ || $photo !~ /^\d+$/ ) { $c->stash( error_album_or_photo => 1, off_photo => 1 ); $c->detach(); } my $sql_p = 'SELECT t1.id_pf, t1.id_pa, t1.id_un, t1.name_pf, t1.description_pf, t1.hidden_pf, t1.created, t1.viewing, t1.size_pf, t1.x_pf, t1.y_pf, t5.hidden_pa, t5.name_pa, t5.privat_pa, t5.description_pa, t4.username, ( SELECT MIN(t6.id_pf) FROM photo_files AS t6 WHERE t6.id_pa = t1.id_pa AND t6.id_pf > t1.id_pf LIMIT 1 ) AS next, ( SELECT MAX(t7.id_pf) FROM photo_files AS t7 WHERE t7.id_pa = t1.id_pa AND t7.id_pf < t1.id_pf LIMIT 1 ) AS prev, (SELECT count(*) FROM photo_files AS t8 WHERE t8.id_pa = t1.id_pa ) AS count_photos, (SELECT count(*) FROM photo_files AS t9 WHERE t9.id_pa = t1.id_pa AND t9.id_pf <= t1.id_pf ) AS count_photo_to FROM photo_files AS t1 LEFT JOIN photo_albums AS t5 ON t1.id_pa = t5.id_pa LEFT JOIN users AS t4 ON t1.id_un = t4.id WHERE t1.id_pf = ? AND t5.id_pa = ? ORDER BY t1.created LIMIT 1'; # print $sql_p; # return; my $loop_data = $c->model('DBI')->dbh->selectrow_hashref( $sql_p, undef, $photo, $album ); if ($loop_data) { if ( $loop_data->{privat_pa} == 0 || ($loop_data->{id_un} != $c->user->{user}->{id} && !$c->forward( qw /MyApp::Controller::friends found_friends/, [ $loop_data->{id_un}, $c->user->{user}->{id} ] ) ) && !$c->check_user_roles('moder_co') ) { $c->stash( no_on_privat_photo_album => 1, off_photo => 1, ); $c->detach(); } ## here must be the module of friends ## ##to define whether there is an author of picture by a friend who looks over that picture ## if ( $loop_data->{hidden_pa} == 1 && ( $c->user_exists() && $loop_data->{id_un} != $c->user->{user}->{id} || !$c->check_user_roles('moder_co') ) ) { $c->stash( error_hidden_pa => 1, off_photo => 1, ); $c->detach(); } if ( $loop_data->{hidden_pf} == 1 && ( $c->user_exists() && $loop_data->{id_un} != $c->user->{user}->{id} || !$c->check_user_roles('moder_co') ) ) { $c->stash( error_hidden_pf => 1, off_photo => 1, ); $c->detach(); } } $c->forward( 'view_off', [ $album, $photo, $loop_data ] ); } sub view_page : Path('/view') : Args(3) { my ( $self, $c, $album, $photo, $page ) = @_; $c->stash->{page_cm} = $page; $c->forward( 'view'. [ $album, $photo ] ); } sub view : Local : Args(2) { my ( $self, $c, $album, $photo, $page ) = @_; $c->stash->{template} = 'view_photo.tt'; $c->stash->{page_cm} = $page; if ( $album !~ /^\d+$/ || $photo !~ /^\d+$/ ) { $c->stash( error_album_or_photo => 1, off_photo => 1 ); $c->detach(); } my $sql3; my $sql_where_min; my $sql_where_max; if ( !$c->user_exists() ) { $sql3 = ' LEFT JOIN content AS t2 ON t5.id_co = t2.id_co LEFT JOIN section AS t3 ON t2.id_se = t3.id_se WHERE t1.id_pf = ? AND t5.id_pa = ? AND t2.hiden_g_co = 0 AND t2.hiden_co = 0 AND t2.active_co = 1 AND t3.active_se = 1 AND t3.hiden_g_co = 0 '; $sql_where_min = ' AND t6.hidden_pf = 0'; $sql_where_max = ' AND t7.hidden_pf = 0'; } elsif ( !$c->check_user_roles('moder_co') && $c->user_exists() ) { $sql3 = ' LEFT JOIN content AS t2 ON t5.id_co = t2.id_co LEFT JOIN section AS t3 ON t2.id_se = t3.id_se WHERE t1.id_pf = ? AND t5.id_pa = ? AND (( t2.hiden_co = 0 AND t2.active_co = 1) OR t2.id_un = ' . $c->user->{user}->{id} . ') AND (t3.active_se = 1 OR t3.id_un = ' . $c->user->{user}->{id} . ')'; $sql_where_min = ' AND (t6.hidden_pf = 0 OR t6.id_un = ' . $c->user->{user}->{id} . ')'; $sql_where_max = ' AND (t7.hidden_pf = 0 OR t7.id_un = ' . $c->user->{user}->{id} . ')'; } elsif ( $c->check_user_roles('moder_co') ) { $sql3 = ' LEFT JOIN content AS t2 ON t5.id_co = t2.id_co LEFT JOIN section AS t3 ON t2.id_se = t3.id_se WHERE t1.id_pf = ? AND t5.id_pa = ?'; $sql_where_min = ''; $sql_where_max = ''; } else { $c->response->redirect( $c->uri_for('/') ); $c->detach(); } my $sql_p = 'SELECT t1.id_pf, t1.id_pa, t1.id_un, t1.name_pf, t1.description_pf, t1.hidden_pf, t1.created, t1.viewing, t1.size_pf, t1.x_pf, t1.y_pf, t5.hidden_pa, t5.name_pa, t5.privat_pa, t5.id_co, t5.description_pa, t2.name_co, t2.active_co, t2.hiden_co, t2.hiden_g_co, t2.close_co, t3.close_se, t3.hiden_g_co AS hiden_g_se, t3.active_se, t3.id_se, t3.name_se, t4.username, ( SELECT MIN(t6.id_pf) FROM photo_files AS t6 WHERE t6.id_pa = t1.id_pa AND t6.id_pf > t1.id_pf ' . $sql_where_min . ' LIMIT 1 ) AS next, ( SELECT MAX(t7.id_pf) FROM photo_files AS t7 WHERE t7.id_pa = t1.id_pa AND t7.id_pf < t1.id_pf ' . $sql_where_max . ' LIMIT 1 ) AS prev, (SELECT count(*) FROM photo_files AS t8 WHERE t8.id_pa = t1.id_pa ) AS count_photos, (SELECT count(*) FROM photo_files AS t9 WHERE t9.id_pa = t1.id_pa AND t9.id_pf <= t1.id_pf ) AS count_photo_to FROM photo_files AS t1 LEFT JOIN photo_albums AS t5 ON t1.id_pa = t5.id_pa LEFT JOIN users AS t4 ON t1.id_un = t4.id ' . $sql3 . ' ORDER BY t1.created LIMIT 1'; # print $sql_p; # return; my $loop_data = $c->model('DBI')->dbh->selectrow_hashref( $sql_p, undef, $photo, $album ); ## ##to define whether there is an author of picture by a friend who looks over that picture ## if ($loop_data) { if ( $loop_data->{privat_pa} == 1 ) { $c->stash( no_on_privat_photo_album => 1, off_photo => 1, ); $c->detach(); } if ( $loop_data->{hidden_pa} == 1 && ( $c->user_exists() && $loop_data->{id_un} != $c->user->{user}->{id} || !$c->check_user_roles('moder_co') ) ) { $c->stash( error_hidden_pa => 1, off_photo => 1, ); $c->detach(); } if ( $loop_data->{hidden_pf} == 1 && ( $c->user_exists() && $loop_data->{id_un} != $c->user->{user}->{id} || !$c->check_user_roles('moder_co') ) ) { $c->stash( error_hidden_pf => 1, off_photo => 1, ); $c->detach(); } } $c->forward( 'view_off', [ $album, $photo, $loop_data ] ); } ### ### END Dispatcher from photo/view* to index : Privat ### sub view_off : Privat { my ( $self, $c, $album, $photo, $loop_data ) = @_; if ( !$loop_data ) { $c->stash( no_photo_album => 1, off_photo => 1, ); $c->detach(); } if ( ( $c->user_exists() && $loop_data->{id_un} == $c->user->{user}->{id} ) || $c->check_user_roles('moder_co') ) { $c->stash->{edit_pa} = 1; } # if we did not change geometry - it is needed to know final X and Y of picture ( $loop_data->{x_pf}, $loop_data->{y_pf} ) = $c->model('Image') ->get_width_height( MyApp->config->{setting}->{photos_dir} . '' . $loop_data->{id_pa} . '/' . $loop_data->{id_pf} . '.jpg' ) if ( !$loop_data->{x_pf} || !$loop_data->{y_pf} ); if ( $loop_data->{x_pf} > MyApp->config->{setting}->{x} + 2 || $loop_data->{y_pf} > MyApp->config->{setting}->{y} + 2 ) { $c->stash( max_view => 1, max_x => MyApp->config->{setting}->{x}, max_y => MyApp->config->{setting}->{y} + 20, ); } $loop_data->{size_pf} = sprintf( '%.1f', $loop_data->{size_pf} / 1024 ) if ( $loop_data->{size_pf} ); $loop_data->{name_pf} = $loop_data->{id_pf} . '.jpg' if ( !$loop_data->{name_pf} ); $loop_data->{next} = $loop_data->{id_pf} if ( !$loop_data->{next} ); $loop_data->{prev} = $loop_data->{id_pf} if ( !$loop_data->{prev} ); $c->stash($loop_data); $c->model('DBI')->dbh->do( qq{UPDATE photo_files SET viewing=1+viewing WHERE id_pf = ?}, undef, $photo ); $c->forward( qw /MyApp::Controller::Comments_photo view_pf_comment/, [ $album, $photo, $c->stash->{page_cm}, $loop_data ] ); # $c->forward( qw /MyApp::Controller::comments_photo view_pf_comment/, # [ $album, $photo, $c->request->params->{page}, $loop_data ] ); $c->detach(); } sub delete : Local : Args(1) { my ( $self, $c, $id ) = @_; $c->stash->{template} = 'add_photo.tt'; if ( !$c->user_exists() || $id !~ /^\d+$/ ) { $c->response->redirect( $c->request->referer() or '/' ); $c->detach(); } my $where = !$c->check_user_roles('moder_co') ? 'AND id_un = ' . $c->user->{user}->{id} : ''; my $limit_sql = 'SELECT id_pf, id_pa, id_un FROM photo_files WHERE id_pf = ? ' . $where . ' LIMIT 1'; my $loop = $c->model('DBI')->dbh->selectrow_hashref( $limit_sql, undef, $id ); if ( !$loop || !$loop->{id_pf} ) { $c->response->redirect( $c->request->referer() or '/' ); $c->detach(); } my $file = MyApp->config->{setting}->{photos_dir} . '' . $loop->{id_pa} . '/' . $loop->{id_pf} . '.jpg'; my $file_thumbnail = MyApp->config->{setting}->{photos_dir} . '' . $loop->{id_pa} . '/thumbnail/' . $loop->{id_pf} . '.jpg'; remove_tree( $file_thumbnail, $file ); $c->model('DBI')->dbh->do( 'DELETE from photo_files WHERE id_pf = ' . $id ); $c->response->redirect( $c->request->referer() or '/' ); $c->detach(); } sub hidden : Local : Args(1) { my ( $self, $c, $id ) = @_; $c->stash->{template} = 'add_photo.tt'; if ( !$c->user_exists() || $id !~ /^\d+$/ ) { $c->response->redirect( $c->request->referer() or '/' ); $c->detach(); } my $where = !$c->check_user_roles('moder_co') ? 'AND id_un = ' . $c->user->{user}->{id} : ''; my $limit_sql = 'UPDATE photo_files SET hidden_pf = 1-hidden_pf WHERE id_pf = ? ' . $where; $c->model('DBI')->dbh->do( $limit_sql, undef, $id ); $c->response->redirect( $c->request->referer() or '/' ); $c->detach(); } ## Privats sub select_pa : Privat { my ( $self, $c, $id, $privat ) = @_; # selection of sql at: # $privat selection of photo of album: his proprietor, ID and names, verification of privat or not privat # !$privat selection of photo of album: his proprietor, ID and names, also selection of content: # ID of content, name, closed or opened # return of hash_ref my $loop_data; # my $sql_u = 'AND t1.id_un = ' . $c->user->{user}->{id} if (!$c->check_user_roles('moder_co')); my $limit_sql; if ($privat) { $limit_sql = 'SELECT t1.id_pa, t1.id_un, t1.name_pa, t1.privat_pa, t1.hidden_pa FROM photo_albums AS t1 WHERE t1.id_pa = ? LIMIT 1'; } else { $limit_sql = 'SELECT t1.id_pa, t1.id_un, t1.hidden_pa, t1.name_pa, t2.close_co, t2.name_co, t2.id_co FROM photo_albums AS t1 LEFT JOIN content AS t2 ON t1.id_co = t2.id_co WHERE t1.id_pa = ? LIMIT 1'; } $loop_data = $c->model('DBI')->dbh->selectrow_hashref( $limit_sql, undef, $id ); return $loop_data ? $loop_data : undef; } sub check_pa_acl : Privat { my ( $self, $c, $loop_data, $privat ) = @_; # treatment hash_ref # conclusion of error of vital error, and conclusion of hash_ref in a template # return of id_pa photo of album if ( !$loop_data || !$loop_data->{id_pa} ) { $c->stash( no_photo => 1, off_form => 1 ); $c->detach(); } if ( !$c->check_user_roles('moder_co') && $loop_data->{id_un} != $c->user->{user}->{id} ) { $c->stash( photo_add_no_user => 1, off_form => 1 ); $c->detach(); } if ($privat) { if ( !$loop_data->{privat_pa} ) { $c->stash( no_privat => 1, off_form => 1 ); $c->detach(); } if ( $loop_data->{close_co} ) { $c->stash( photo_add_no_close_co => 1, off_form => 1 ); $c->detach(); } } $c->stash($loop_data); return $loop_data->{id_pa}; } sub insert_photo : Privat { my ( $self, $c, $id_pa, $name_pf, $description_pf ) = @_; # $id_pa, $name_pf, $description_pf # we insert the photos of files given in a table, to define ID and create a file with the same ID... my $sql = 'INSERT INTO photo_files SET id_pa = ?, id_un = ?, name_pf = ?, description_pf = ?, created = ?'; $c->model('DBI')->dbh->do( $sql, undef, $id_pa, $c->user->{user}->{id}, $name_pf, $description_pf, time ); return $c->model('DBI')->dbh->{mysql_insertid}; } =head1 AUTHOR Dmitriy email: rtyug@ukr.net www: http://unixforum.org.ua =head1 LICENSE This library is free software. You can redistribute it and/or modify it under the same terms as Perl itself. =cut 1; отладка Code: ./myapp_server.pl -r Useless use of hash element in void context at /home/x0/data4/MyApp/script/../lib/MyApp/Controller/voting.pm line 114. MyApp::View::HTML::Template is using the deprecated Catalyst::Base, update your application as this will be removed in the next major release at /usr/local/lib/perl5/site_perl/5.8.9/Catalyst/Base.pm line 7. [debug] Debug messages enabled [debug] Statistics enabled [warn] You are running an old script! Please update by running (this will overwrite existing files): catalyst.pl -force -scripts MyApp or (this will not overwrite existing files): catalyst.pl -scripts MyApp [debug] Loaded plugins: .----------------------------------------------------------------------------. | Catalyst::Plugin::Authentication 0.100091 | | Catalyst::Plugin::Authentication::Store::DBI 0.01 | | Catalyst::Plugin::Authorization::Roles 0.07 | | Catalyst::Plugin::Captcha 0.03 | | Catalyst::Plugin::ConfigLoader 0.23 | | Catalyst::Plugin::Session 0.22 | | Catalyst::Plugin::Session::State::Cookie 0.11 | | Catalyst::Plugin::Session::Store::DBI 0.13 | | Catalyst::Plugin::Static::Simple 0.21 | | Catalyst::Plugin::Unicode 0.91 | | Catalyst::Plugin::Upload::Image::Magick | '----------------------------------------------------------------------------' [debug] Loaded dispatcher "Catalyst::Dispatcher" [debug] Loaded engine "Catalyst::Engine::HTTP::Restarter" [debug] Found home "/home/x0/data4/MyApp" [debug] Loaded Config "/home/x0/data4/MyApp/myapp.conf" [debug] Setting up auth realm default [debug] Loaded components: .-----------------------------------------------------------------+----------. | Class | Type | +-----------------------------------------------------------------+----------+ | MyApp::Controller::Comments_api | instance | | MyApp::Controller::Comments_photo | instance | | MyApp::Controller::Cron | instance | | MyApp::Controller::Error | instance | | MyApp::Controller::Help | instance | | MyApp::Controller::Login | instance | | MyApp::Controller::Logout | instance | | MyApp::Controller::Profile | instance | | MyApp::Controller::Root | instance | | MyApp::Controller::albums | instance | | MyApp::Controller::comment | instance | | MyApp::Controller::delete | instance | | MyApp::Controller::friends | instance | | MyApp::Controller::groups | instance | | MyApp::Controller::groups_photo | instance | | MyApp::Controller::groups_video | instance | | MyApp::Controller::meneger | instance | | MyApp::Controller::meneger_users | instance | | MyApp::Controller::personal_reports | instance | | MyApp::Controller::photo | instance | | MyApp::Controller::photo_album | instance | | MyApp::Controller::registration | instance | | MyApp::Controller::search | instance | | MyApp::Controller::stat | instance | | MyApp::Controller::video | instance | | MyApp::Controller::video_album | instance | | MyApp::Controller::view_content | instance | | MyApp::Controller::view_content_head | instance | | MyApp::Controller::view_global_section | instance | | MyApp::Controller::view_section | instance | | MyApp::Controller::voting | instance | | MyApp::Model::BBcode | instance | | MyApp::Model::DBI | instance | | MyApp::Model::ExtraDBI | instance | | MyApp::Model::Image | instance | | MyApp::Model::Quantum | instance | | MyApp::Model::Sorting | instance | | MyApp::Model::Tree | instance | | MyApp::View::HTML::Template | instance | '-----------------------------------------------------------------+----------' .................................................. .................................................. [debug] Loaded Path actions: .-------------------------------------+--------------------------------------. | Path | Private | +-------------------------------------+--------------------------------------+ | / | /default | | / | /index | | /albums | /albums/index | | /comment | /comment/index | | /comment/add | /comment/add | | /comment/delete_comment | /comment/delete_comment | | /comment/edit2 | /comment/edit2 | | /comment/edit_comment | /comment/edit_comment | | /comments_api | /comments_api/index | | /comments_photo | /comments_photo/index | | /comments_photo/add | /comments_photo/add | | /comments_photo/create_captcha | /comments_photo/create_captcha | | /cron/converts_video | /cron/converts_video | | /delete | /delete/index | | /delete/delete_comment | /delete/delete_comment | | /delete/delete_content | /delete/delete_content | | /delete/delete_section | /delete/delete_section | | /error | /error/index | | /friends | /friends/index | | /friends/add_friends | /friends/add_friends | | /friends/confirm | /friends/confirm | | /friends/confirm_friend | /friends/confirm_friend | | /friends/decline | /friends/decline | | /friends/decline_friend | /friends/decline_friend | | /friends/delete_friend | /friends/delete_friend | | /friends/not_confirm | /friends/not_confirm | | /friends/not_decline | /friends/not_decline | | /groups | /groups/index | | /groups_photo | /groups_photo/index | | /groups_video | /groups_video/index | | /help | /help/index | | /login | /login/login | | /logout | /logout/index | | /meneger | /meneger/index | | /meneger/active_cs | /meneger/active_cs | | /meneger_users | /meneger_users/index | | /meneger_users/active | /meneger_users/active | | /meneger_users/delete_user | /meneger_users/delete_user | | /meneger_users/level_access | /meneger_users/level_access | | /personal_reports | /personal_reports/index | | /photo | /photo/index_photo | | /photo | /photo/index_pages_photo | | /photo/add | /photo/add | | /photo/add_privat | /photo/add_privat | | /photo/content | /photo/content | | /photo/delete | /photo/delete | | /photo/hidden | /photo/hidden | | /photo/last | /photo/last | | /photo/privat | /photo/privat | | /photo/view | /photo/view | | /photo/view_max | /photo/view_max | | /photo/view_privat | /photo/view_privat | | /photo/view_privat_max | /photo/view_privat_max | | /photo_album | /photo_album/index | | /photo_album | /photo_album/index_pages_album | | /photo_album/add | /photo_album/add | | /photo_album/add2 | /photo_album/add2 | | /photo_album/add2_privat | /photo_album/add2_privat | | /photo_album/add_privat | /photo_album/add_privat | | /photo_album/delete | /photo_album/delete | | /photo_album/edit | /photo_album/edit | | /photo_album/edit2 | /photo_album/edit2 | | /photo_album/edit2_privat | /photo_album/edit2_privat | | /photo_album/edit_privat | /photo_album/edit_privat | | /photo_album/hidden | /photo_album/hidden | | /photo_album/privat | /photo_album/privat | | /profile | /profile/index | | /profile/add_content | /profile/add_content | | /profile/add_content2 | /profile/add_content2 | | /profile/add_section | /profile/add_section | | /profile/add_section2 | /profile/add_section2 | | /profile/edit_content | /profile/edit_content | | /profile/edit_pesonal_content | /profile/edit_pesonal_content | | /profile/edit_pesonal_content2 | /profile/edit_pesonal_content2 | | /profile/edit_pesonal_section | /profile/edit_pesonal_section | | /profile/edit_pesonal_section2 | /profile/edit_pesonal_section2 | | /profile/edit_section | /profile/edit_section | | /profile/view_pesonal_comment | /profile/view_pesonal_comment | | /profile/view_pesonal_comment | /profile/view_pesonal_comment_page | | /profile/view_pesonal_comment | /profile/view_pesonal_comment_admin | | /profile/view_pesonal_content | /profile/view_pesonal_content | | /profile/view_pesonal_content | /profile/view_pesonal_content_page | | /profile/view_pesonal_content | /profile/view_pesonal_content_admin | | /profile/view_pesonal_section | /profile/view_pesonal_section | | /profile/view_pesonal_section | /profile/view_pesonal_section_page | | /profile/view_pesonal_section | /profile/view_pesonal_section_admin | | /profile/view_profile | /profile/view_profile | | /registration | /registration/index | | /registration/active | /registration/active | | /registration/add | /registration/add | | /registration/create_captcha | /registration/create_captcha | | /registration/edit | /registration/edit | | /re





Проголосовавшых: 1        Балов: 1        Среднее: 0        Популярность: 8       
Чтобы проголосовать вы должны зарегистрироватся !




Группы:       
Групп не найдено!





Фотоальбомы:       
Фотоальбомов не найдено





Видеоальбомы:       
Видеоальбомов не найдено



Комментарии



Гостям, запрещено создавать комментарии! Можете зарегистрироватся ...



HTML/CSS/JS has been tested in a browser Firefox2-3, secondary - IE.
BETA testing, Lite version. MVC Catalyst, Perl, jQuery UI/Plugins, CSS3, MySQL, FreeBSD, etc. Open source (email: q7u5@ukr.net)
1 1 1 1 333 2 3 4 5
http://www.free-lance.ru/users/q7u5
http://www.free-lance.ru/users/q7u5/info/
http://www.developers.org.ua/m/ProFTP/
http://kosenkod.moikrug.ru/
http://www.superjob.ua/resume/?id=5211132
http://forum.searchengines.ru/showthread.php?p=5323525
http://job.ukr.net/resume/dmitrij-267783/
http://forum.perl.dp.ua/cgi-bin/YaBB.pl?num=1250013012
http://it4business.ru/forum/topic15656.html
http://www.weblancer.net/users/ProFTP/
http://forum.sources.ru/index.php?showtopic=322336
http://job.tochka.net/resume-359091/
http://hh.ua/resume/269c232aff00e06e2f0039ed1f4b576d35595a
http://www.cyberforum.ru/job-search/thread355972.html
666 666 666 666 666 666 666 666 666 666 666 666 666 666 666 666 666 666 666 666 666 666 666 666 666 666 666 666 666 666 666 666 666 666 666 666 666 666 666 666 666 666 666 666 666 666 666 666 666