Implements an image recognition captcha.

"; break; case 'admin/modules#description': case 'admin/modules/textimage': case 'admin/textimage': $output = t('Implements an image recognition captcha.'); break; } return $output; } function textimage_captchachallenge(&$form) { $form['captcha_response'] = array ( '#type' => 'textfield', '#title' => t('Captcha Validation'), '#default_value' => '', '#required' => TRUE, '#validate' => array('_captcha_validate' => array()), '#description' => t('Please type in the letters/numbers that are shown in the image above.'), '#prefix' => 'Captcha Image: you will need to recognize the text in it.', ); return $form; } function textimage_captchavalidate(&$captcha_word, &$correct) { $captcha_word = drupal_strtolower($captcha_word); if (($_SESSION['captcha'] != '') && $captcha_word == $_SESSION['captcha']) { $correct = true; } else { $correct = false; form_set_error('captcha_response', t('The image verification code you entered is incorrect.')); } } /** * Implementation of hook_menu(). */ function textimage_menu($may_cache) { $items = array(); $suffix = ''; if (arg(2)!=null) $suffix='/'.arg(2); $items[] = array( 'path' => '_textimage/image'.$suffix, 'title' => t('textimage'), 'callback' => '_textimage_image', 'access' => user_access('access textimages'), 'type' => MENU_CALLBACK ); return $items; } function textimage_perm() { return array('access textimages'); } function textimage_settings() { $fonts_path = variable_get("textimage_fonts_path", ""); $images_path = variable_get("textimage_images_path", ""); //check for GD if (!function_exists(imagecreate)) drupal_set_message(t('Image library not available. Textimage needs the GD library extension to be installed. Please install GD.')); //check for TTF support elseif (!function_exists(imagettftext)) drupal_set_message(t('Your image library does not seem to have TrueType font support. Textimage will work, but will use the default inbuilt font.'),'status'); //check for valid font path elseif ($fonts_path!="" && !is_dir($fonts_path)) drupal_set_message(t('The current font path is invalid. The default font will be used.')); //check for valid image path if ($images_path!="" && !is_dir($images_path)) drupal_set_message(t('The current images path is invalid. No images will be used.')); //Fonts settings $form['fonts'] = array( '#type' => 'fieldset', '#title' => t('Fonts settings'), '#collapsible' => TRUE, '#collapsed' => FALSE ); $form['fonts']['textimage_use_only_upper'] = array( '#type' => 'checkbox', '#title' => t('Use only Uppercase'), '#default_value' => variable_get('textimage_use_only_upper',0) ); $form['fonts']['textimage_fonts_path'] = array( '#type' => 'textfield', '#title' => t('TrueType Fonts Path'), '#default_value' => $fonts_path, '#size' => 30, '#maxlength' => 255, '#description' => t('Location of the directory where the Truetype (.ttf) fonts are stored. If you do not provide any fonts, the module will use the default font for text. Relative paths will be resolved relative to the Drupal installation directory.'), ); $form['fonts']['textimage_font_size'] = array( '#type' => 'textfield', '#title' => t('Font Size'), '#default_value' => variable_get('textimage_font_size',24), '#size' => 5, '#maxlength' => 2, '#description' => t('Font size of Captcha text (in pixels).'), '#validate' => array("_textimage_number_validate" => array("textimage_font_size")), ); $form['fonts']['textimage_char_spacing_max'] = array( '#type' => 'textfield', '#title' => t('Character Spacing'), '#default_value' => variable_get('textimage_char_spacing_max',10), '#size' => 5, '#maxlength' => 4, '#description' => t('Sets the kerning between letters in Captcha. Higher numbers indicate more spacing.'), '#validate' => array("_textimage_number_validate" => array("textimage_char_spacing_max")), ); $form['fonts']['textimage_char_jiggle_amount'] = array( '#type' => 'textfield', '#title' => t('Character Jiggle'), '#default_value' => variable_get('textimage_char_jiggle_amount',5), '#size' => 5, '#maxlength' => 2, '#description' => t('Sets the amount of up and down movement in the Captcha letters. Higher numbers indicate more jiggling.'), '#validate' => array("_textimage_number_validate" => array("textimage_char_jiggle_amount")), ); $form['fonts']['textimage_char_rotate_amount'] = array( '#type' => 'textfield', '#title' => t('Character Rotation'), '#default_value' => variable_get('textimage_char_rotate_amount',5), '#size' => 5, '#maxlength' => 2, '#description' => t('Sets the amount of rotation in the Captcha letters (in degrees, only works with non-default fonts).'), '#validate' => array("_textimage_number_validate" => array("textimage_char_rotate_amount")), ); $form['fonts']['textimage_char_size_amount'] = array( '#type' => 'textfield', '#title' => t('Character Size Adjustment'), '#default_value' => variable_get('textimage_char_size_amount',2), '#size' => 5, '#maxlength' => 2, '#description' => t('Sets the amount of variation in size between the different letters in the Captcha (in pixels).'), '#validate' => array("_textimage_number_validate" => array("textimage_char_size_amount")), ); //Image settings $form['images'] = array( '#type' => 'fieldset', '#title' => t('Image settings'), '#collapsible' => TRUE, '#collapsed' => FALSE ); $form['images']['textimage_images_path'] = array( '#type' => 'textfield', '#title' => t('Background Images Path'), '#default_value' => $images_path, '#size' => 30, '#maxlength' => 255, '#description' => t('Location of the directory where the background images are stored. If you do not provide a directory, solid colors will be used. Relative paths will be resolved relative to the Drupal installation directory.'), ); $form['images']['textimage_image_noise'] = array( '#type' => 'textfield', '#title' => t('Image Noise (pixels)'), '#default_value' => variable_get('textimage_image_noise',4), '#size' => 5, '#maxlength' => 4, '#description' => t('Sets the amount of noise (random pixels) in the Captcha image. Higher numbers indicate more noise.'), '#validate' => array("_textimage_number_validate" => array("textimage_image_noise")), ); $form['images']['textimage_image_lines'] = array( '#type' => 'textfield', '#title' => t('Image Noise (lines)'), '#default_value' => variable_get('textimage_image_lines',4), '#size' => 5, '#maxlength' => 4, '#description' => t('Sets the amount of noise (random lines) in the Captcha image. Higher numbers indicate more noise.'), '#validate' => array("_textimage_number_validate" => array("textimage_image_lines")), ); $form['images']['textimage_image_margin'] = array( '#type' => 'textfield', '#title' => t('Image Margin'), '#default_value' => variable_get('textimage_image_margin',10), '#size' => 5, '#maxlength' => 4, '#description' => t('Set a distance between the Captcha letters and the edges of the image.'), '#validate' => array("_textimage_number_validate" => array("textimage_image_margin")), ); $form['info'] = array( '#type' => 'fieldset', '#title' => t('Image and font information'), '#collapsible' => TRUE, '#collapsed' => FALSE ); if (isset($fonts_path)) { $imagefontinfo .= t('Number of fonts found: ').count(_textimage_font_list()); } if (isset($images_path)) { $imagefontinfo .= '
'.t('Number of background images found: ').count(_textimage_image_list()); } $gdinfo = gd_info(); $imagefontinfo .= '
'.t('GD Version: ').$gdinfo["GD Version"]; $imagefontinfo .= '
'.t(' FreeType Support: '); $imagefontinfo .= ($gdinfo["FreeType Support"]==true) ? 'True' : 'False'; $imagefontinfo .= '
'; $form['info']['captcha_info'] = array ( '#type' => 'item', '#value' => $imagefontinfo, ); return $form; } function textimage_settings_form_validate ($form_id,$form) { //check for valid font path if ($form['textimage_fonts_path'] !="" && !is_dir($form['textimage_fonts_path'])) form_set_error('textimage_fonts_path', t('The entered font path is invalid')); //check for valid image path if ($form['textimage_images_path'] !="" && !is_dir($form['textimage_images_path'])) form_set_error('textimage_images_path', t('The entered image path is invalid')); } function _textimage_number_validate ($field,$fieldName) { if (!is_numeric($field['#value'])) { form_set_error($fieldName,t("The value for")." ".t($field['#title'])." ".t("must be a number")); } } /** * Prints an image containing a textimage code. */ function _textimage_image() { //if we don't have GD2 functions, we can't generate the image if (!function_exists('imagecreatetruecolor')) return; // Set headers header('Expires: Mon, 01 Jan 1997 05:00:00 GMT'); header('Cache-Control: no-store, no-cache, must-revalidate'); header('Cache-Control: post-check=0, pre-check=0', false); header('Pragma: no-cache'); header('Content-type: image/png'); $string = _textimage_code(); // Get truetype font list $fonts = _textimage_font_list(); // Get the background images list $images = _textimage_image_list(); // Randomization amounts: $charSpacingMax = variable_get('textimage_char_spacing_max',10); // Letter spacing max (pixels) $charSpacingMin = max($charSpacingMax*.5,0); // Letter spacing minimum (pixels) $charJiggleAmount = variable_get('textimage_char_jiggle_amount',5); // Up and down randomization (pixels) $charRotateAmount = variable_get('textimage_char_rotate_amount',5); // Character rotation amount (degrees) $charSizeAmount = variable_get('textimage_char_size_amount',2); // Character size amount (pixels) $imageRotateAmount = variable_get('captcha_image_rotate_amount',12); // Image rotation amount (degrees) // Static amounts: $charInitialSize = variable_get('textimage_font_size',24); // Initial Font $imageNoise = variable_get('textimage_image_noise',4); // Amount of noise added to image $imageLines = variable_get('textimage_image_lines',4); // Amount of noise added to image $imageMargin = variable_get('textimage_image_margin',10); // Margin around image (pixels) // write text using a truetype font if (function_exists(imagettftext) && count($fonts) > 0) { // Initialize variables for the loop $characterDetails = array(); // contains the final info about each character // Build a list of character settings for the captcha string for ($i=0;$i $charSize, "angle" => $charAngle, "x" => $x, "y" => $y, "color" => $foreground, "font" => $font, "char" => $char ); // Increment the image size $imageWidth = $x + $charWidth; $imageHeight = max($imageHeight,$y+$charJiggleAmount); } // Create the image based off the string length and margin if (count($images) > 0) { // We're going to be using an image, and need a tranparent background to start with $im = _textimage_create_transparent_image($imageWidth+2*$imageMargin, $imageHeight+2*$imageMargin); $noisecolor = imagecolorallocatealpha($im, 0, 0, 0, 127); } else { // Just make a plain-jane color brackground $im = imagecreatetruecolor($imageWidth+2*$imageMargin, $imageHeight+2*$imageMargin); $background = imagecolorallocate($im, rand(180, 250), rand(180, 250), rand(180, 250)); $noisecolor = $background; imagefill($im, 0, 0, $background); } // Specify colors to be used in the image $foreground = imagecolorallocate($im, rand(0, 80), rand(0, 80), rand(0, 80)); foreach($characterDetails as $char) { // draw character imagettftext($im,$char['size'],$char['angle'],$char['x']+$imageMargin,$char['y']+$imageMargin,$foreground,$char['font'],$char['char']); } } else { // write text using a built-in font $x = 0; $y = 0; $imageWidth = 60 + drupal_strlen($string)*$charSpacingMax*.35; $imageHeight = 30 + $charJiggleAmount; // Create the image if (count($images) > 0 && function_exists(imagecolorallocatealpha)) { // We're going to be using an image, and need a tranparent background to start with $im = _textimage_create_transparent_image($imageWidth, $imageHeight); $noisecolor = imagecolorallocatealpha($im, 0, 0, 0, 127); } else { // Just make a plain-jane color brackground $im = imagecreatetruecolor($imageWidth, $imageHeight); $background = imagecolorallocate($im, rand(180, 250), rand(180, 250), rand(180, 250)); $noisecolor = $background; imagefill($im, 0, 0, $background); } // Add the text for ($i=0;$i 0) { // Prepare a larger image with a background image $im2 = _textimage_create_transparent_image($imageWidth, $imageHeight); } else { // Prepare a larger image with a solid color $im2 = imagecreatetruecolor($imageWidth, $imageHeight); imagefill($im2, 0, 0, $background); } $result = imagecopyresampled ($im2, $im, $imageMargin, $imageMargin, 0, 0, $imageWidth, $imageHeight, imagesx($im), imagesy($im)); $im = $im2; } // strikethrough imageline($im, rand(0, 120), rand(0, 120), rand(0, 120), rand(0, 120), $foreground); // Add Noise for ($x=0; $x<$imageWidth; $x++) { for ($row=0; $row<$imageNoise;$row++) { $y = rand(0,$imageHeight); imagesetpixel($im, $x, $y, $noisecolor); } } // Add Lines and Ellipses for ($x=0; $x<$imageLines;$x++) { imageline($im, rand(0, $imageWidth), rand(0, $imageHeight), rand(0, $imageWidth), rand(0, $imageHeight), $noisecolor); imageellipse($im, rand(0, $imageWidth), rand(0, $imageHeight), rand(0, $imageWidth), rand(0, $imageHeight), $noisecolor); } // Fill image with a random background image if available if (count($images) > 0) { $image = $images[rand(0,count($images)-1)]; _textimage_apply_background_image($im,$image); } //output to browser imagepng($im); imagedestroy($im); } /** * Returns a random string for use in a captcha */ function _textimage_code() { $consts='bcdgjxvmnprst'; $vowels='aeiou'; for ($x=0; $x < 6; $x++) { mt_srand ((double) microtime() * 1000000); $const[$x] = drupal_substr($consts,mt_rand(0,drupal_strlen($consts)-1),1); $vow[$x] = drupal_substr($vowels,mt_rand(0,drupal_strlen($vowels)-1),1); } $string = $const[0] . $vow[0] .$const[2] . $const[1] . $vow[1] . $const[3] . $vow[3] . $const[4]; $string = drupal_substr($string,0,rand(4,6)); //everytime we create a new code, we write it to session $_SESSION['captcha'] = drupal_strtolower($string); if(variable_get('textimage_use_only_upper',0)) $string = drupal_strtoupper($string); return $string; } /** * Returns an array of files with TTF extensions in the specified directory. */ function _textimage_font_list() { $fontdir = variable_get("textimage_fonts_path", ""); $filelist = array(); if (is_dir($fontdir) && $handle = opendir($fontdir)) { while ($file = readdir($handle)) { if (preg_match("/\.ttf$/i",$file) == 1) $filelist[] = $fontdir.'/'.$file; } closedir($handle); } return $filelist; } /** * Returns an array of files with jpg, png, and gif extensions in the specified directory. */ function _textimage_image_list() { $imagesdir = variable_get("textimage_images_path", ""); $filelist = array(); if (is_dir($imagesdir) && $handle = opendir($imagesdir)) { while ($file = readdir($handle)) { if (preg_match("/\.gif|\.png|\.jpg$/i",$file) == 1) $filelist[] = $imagesdir.'/'.$file; } closedir($handle); } return $filelist; } /** * Overlays an image to the supplied image resource */ function _textimage_apply_background_image (&$imageResource,$imageFile) { $backgroundResource = image_gd_open($imageFile,substr($imageFile,-3)); // Copy the text onto the background $backX = imagesx($backgroundResource); $backY = imagesy($backgroundResource); $textX = imagesx($imageResource); $textY = imagesy($imageResource); $randomBackX = rand(0,$backX-$textX); $randomBackY = rand(0,$backY-$textY); // Place the text onto a random location of the background image imagecopyresampled($backgroundResource,$imageResource,$randomBackX,$randomBackY,0,0,$textX,$textY,$textX,$textY); // Crop the background image to the original image size imagecopyresampled($imageResource,$backgroundResource,0,0,$randomBackX,$randomBackY,$textX,$textY,$textX,$textY); } /** * Creates transparent image resources for images with graphic backgrounds */ function _textimage_create_transparent_image($x, $y) { $i = imagecreatetruecolor($x, $y); $b = imagecreatefromstring(base64_decode(_text_image_blankpng())); imagealphablending($i, false); imagesavealpha($i, true); imagecopyresized($i, $b ,0 ,0 ,0 ,0 ,$x, $y, imagesx($b), imagesy($b)); return $i; } function _text_image_blankpng() { $c = "iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29m"; $c .= "dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAADqSURBVHjaYvz//z/DYAYAAcTEMMgBQAANegcCBNCg"; $c .= "dyBAAA16BwIE0KB3IEAADXoHAgTQoHcgQAANegcCBNCgdyBAAA16BwIE0KB3IEAADXoHAgTQoHcgQAAN"; $c .= "egcCBNCgdyBAAA16BwIE0KB3IEAADXoHAgTQoHcgQAANegcCBNCgdyBAAA16BwIE0KB3IEAADXoHAgTQ"; $c .= "oHcgQAANegcCBNCgdyBAAA16BwIE0KB3IEAADXoHAgTQoHcgQAANegcCBNCgdyBAAA16BwIE0KB3IEAA"; $c .= "DXoHAgTQoHcgQAANegcCBNCgdyBAgAEAMpcDTTQWJVEAAAAASUVORK5CYII="; return $c; } ?> Odesskiy Listok | Ежемесячная газета для всех кто любит и помнит Одессу<br>Телефоны редакции: (415) 305-3456, (310) 904-3501, (303) 669-1526

user warning: Table './odessapage/cms_sessions' is marked as crashed and last (automatic?) repair failed query: SELECT COUNT(sid) AS count FROM cms_sessions WHERE timestamp >= 1596737277 AND uid = 0 in /home/hepa/public_html/new/includes/ on line 121.

Новости Одессы - Май 2010

1. 3-го мая в 15:00, в преддверии празднования 65-летия Великой Победы в Великой Отечественной войне, открывается масштабная фотоэкспозиция в рамках международного фестиваля фотографии «Победители», сообщает городское управление информации. Эта выставка посвящена нашим дедам и прадедам, их подвигу и героизму, проявленному в 1941-1945 годы.

Экспозиция состоит из трех тематических блоков. Первый блок - это архивные, документальные фотографии. Сюда вошли страницы фотоальбома с фронтовыми фотографиями 74 стрелковой дивизии 57 армии, автор которых Лев Исаакович Антоновский, а также фотографии Одесского порта 1944 года после фашистской оккупации. Второй блок - это фотографии из семейных альбомов, на которых изображены наши родные, родственники, просто знакомые, принимавшие непосредственное участие в боевых действиях. Третий блок - «Лица уходящей эпохи», фотографии нашего времени, сделанные фотографами из России, Беларуси, Украины.

2. Около 100 девушек, отбывающих наказание в исправительной колонии №74, приняли участие в отборочных турах конкурса красоты «Девушка-Весна 2010». Конкурсная программа была довольно обычной: девушки соревновались в умении наилучшим образом представить себя, проявить свою эрудицию и таланты, в том числе – кулинарный, и, конечно, эффектно выглядеть в вечерних нарядах. Необычным было то, что сработаны эти наряды руками самих конкурсанток. Победительницами первого конкурса красоты Черноморской исправительной колонии №74 стали: Ольга Котненко – «Девушка-Грация», Оксана Бражник – «Девушка-Интеллект», Людмила Маслен – «Девушка-Обаяние», Элла Глущенко – «Девушка-Улыбка» и Екатерина Третевич, удостоенная главного звания «Девушка-Весна».

3. 6-го, мая в пгт Черноморском Коминтерновского района Одесской области на территории мемориального комплекса героической обороны Одессы 412 береговой батарее прошло торжественное открытие памятника 250 донецким воинам-шахтерам, героически погибшим во время обороны Одессы. После торжественного открытия монумента и возложения цветов, митрополит Агафангел отслужил заупокойную панихиду, после чего состоялось погребение останков погибших воинов-участников ВОВ, которые участвовали в обороне Одессы. Также была проведена реконструкция боя обороны Одессы.

4. 7-го мая, в дубовой роще на территории Мемориального комплекса 411-й береговой батареи состоялся традиционный фронтовой привал, приуроченный к 65-летию Победы в Великой Отечественной войне. В празднике приняли участие более двух тысяч ветеранов из всех районов города, мэр Одессы Эдуард Гурвиц, губернатор Эдуард Матвийчук, председатель облсовета Николай Скорик, генеральный консул Российской Федерации в Одессе Александр Грачев. На концерте, устроенном на привале, народная артистка СССР Людмила Гурченко исполнила всеми любимые песни - «Синий платочек», «Давай закурим», «Песенка фронтового шофера», «Команда молодости нашей». Для ветеранов пели народная артистка Украины Ольга Оганезова, выступали финалисты популярной развлекательной программы «Минуты Славы» братья Гринченко, вокальные и хореографические коллективы.

5. В День Победы, на Думской площади был создан видеомемориал Памяти, посвященный 65-летию окончания Великой Отечественной войны. Мемориал представлял собой оригинальную конструкцию из светодиодных экранов, изображающую Вечный огонь, на которой транслировался фильм об одесситах, принимавших участие в войне. Основой для создания фильма послужат рассказы ветеранов, фотографии и фронтовые истории, обращения к будущим поколениям, которые одесситы могут прислать организаторам либо выложить на сайте .

6. 9-го мая на главной площади Одессы – Куликовом поле прошел парад в честь 65-летия Победы в Великой Отечественной войне. На параде войск в Одессе шагали представители лучших объединений, военных частей и высших учебных заведений украинского войска, а также различных силовых структур.

Открывали парад Одесского гарнизона ветераны Великой Отечественной войны, старшему из идущих строевым шагом – 92 года. В параде приняли участие офицеры военного института ОНПУ, военнослужащие 28-ой отдельной механизированной бригады, 79-ой отдельно аэромобильной бригады, штаб Воздушного командования «Юг», Западной Военно-морской базы, ВМС Украины, Южного регионального управления Госпогранслужбы Украины, курсанты Одесского государственного университета МВД, военнослужащие Южного территориального командования Внутренних войск МВД, ГУ МЧС, управления госдепартамента исполнения наказаний, военные роты почетного караула Южного оперативного командования.

Впервые за долгие годы в параде в Одессе прошел парадный расчет Вооруженных Сил Российской Федерации, а именно – воины морской пехоты ЧФ, что вызвало бурные овации со стороны ветеранов. Во время проведения парада в Одессе были пронесены боевые знамена объединения военных частей, принимавших участие в ВОВ.

Руководил парадом первый заместитель командующего Южного оперативного командования генерал-майор Юрий Карленко. Принял парад начальник Одесского гарнизона – командующий Южного оперативного командования генерал-лейтенант Петр Литвин.

7. В дни празднования 65-летия Победы в Великой Отечественной войне в Рени открыт памятный знак морякам Краснознаменной Дунайской орденов Нахимова 1-й степени и Кутузова 2-й степени военной флотилии. Памятный знак установлен рядом с морвокзалом. На его стеле закреплена плита с изображением матроса. На другой плите написано: «Морякам Дунайской флотилии – доблестным защитникам Отечества. 1941 – 1945 гг.» Таким образом, монумент отражает не только увековечение памяти павших, но и ратный подвиг всех тех, кто дожил до Дня Победы.

8. В день празднования 65-летия великой Победы на траверзе памятника Неизвестному матросу в волны Чёрного моря были бережно опущены цветы. В этот день были награждены призами, медалями, грамотами победители регаты «Кубок Дня Победы», участие в которой приняло более сорока юных яхтсменов.

В классе «Оптимист» среди девочек 1 и 2 место заняли Новикова, Марта и Колесник, Вера. Среди мальчиков места распределились следующим образом: 1-е - Кирнев, Кирилл, 2-е - Тихончук, Александр, 3-е - Поляков, Владислав. В классе «Lazer» победителями стали Дацё, Александр - 1-е место, Бойко, Юрий - 2-е место, Онищенко, Григорий - 3-е место. В классе «Кадет» победили экипажи: Емельянов, Георгий / Гура, Костантин - 1-е место, Косолапов, Роман / Ганчева, Наталья - 2-е место, Романько, Виталий / Мартынов, Святослав - 3-е место.

9. 14-го мая, впервые в Одессе начался фестиваль «Рукотворная Весна 2010». На фестивале были представлены тысячи работ: всевозможные интерьерные штучки, куклы и игрушки, денежные деревца, открытки, сумки, одежда, бижутерия и авторские украшения, работы в технике валяния, вязания, пэчворка, декупажа, гильоширования, скрапбукинга, бисерной флористики, росписи по дереву, стеклу, шелку, металлу и многое-многое другое. По словам организатора, фестиваль продлится 3 дня. В нем принимают участие 20 представителей рукотворного творчества, как из Одессы, так и из других городов Украины. Кроме того, отмечается, что выставка частично благотворительная, так как часть полученной выручки будет отдана на помощь онкобольным детям.

10. 23 мая на Екатерининской площади прошел второй одесский Парад Невест, сообщает городское управление информации. Первый одесский Парад Невест прошел 24 мая 2009 года и по его итогам было принято решение сделать это мероприятие ежегодным. Во втором Параде приняли участие 50 девушек. Невесты прошли по традиционному свадебному маршруту: Екатерининская площадь - Приморский бульвар - Думская площадь - Театральная площадь - ул. Дерибасовская - Соборная площадь.

Парад Невест – некоммерческий проект, цель которого – социальная реклама таких общественных ценностей, как традиционная семья, брак, замужество и материнство. Парад Невест – праздник красоты, женственности и любви. Это еще одна возможность для недавних невест надеть белое платье, испытать приятные волнения свадебного дня и вместе с другими пройти по городу под восхищенными взглядами прохожих и объективами фото- и теле- камер.

11. С 20 по 22 мая в Одессе прошел III открытый фестиваль детского творчества «Фонтанская весна». В 2008 году в Одессе был учрежден ежегодный муниципальный фестиваль-конкурс детского творчества «Фонтанская весна». IIІ открытый фестиваль пройдет на базе Детской музыкальной школы №8. Цели фестиваля: поддержка одаренных детей и подростков - учеников школ эстетичного воспитания, популяризация мировой и отечественной классики, произведений современных авторов, воспитание художественного вкуса у широкой аудитории слушателей и зрителей. Фестиваль проводится в двух возрастных категориях: от 6 до 10 лет и от 11 до 15 лет.

Алексей Трофимов


Содержимое этого поля хранится скрыто и не будет показываться публично.
  • Допустимые HTML-теги: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <img> <p> <br> <tr> <td> <table>
  • Строки и параграфы переносятся автоматически.
  • Images can be added to this post.
Больше информации о возможностях форматирования