[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: dle cms – хостинг изображений
PicLive
Хваленые фрилансеры не взялись за мой проект.
Пожалуйста, ознакомьтесь, может поможет кто.
Готов оплатить ваши труды при положительном результате.

Суть - сделать из dle cms, хостинг файлов, сохранив основной функционал dle cms.

Необходимо создать возможность для пользователя, как зарегистрированного так и нет, загружать на сайт изображения, так же предусмотреть массовую загрузку изображений.

При массовой загрузке изображений, каждое загруженное изображение, должно иметь свой адрес, т.е. каждое изображение – новая новость.
Загружаемые изображения авторизованным пользователем, должны так же отображаться в личном кабинете пользователя.

Грубо говоря, создать хостинг изображений на dle cms

При загрузке файлов, должны выполняться все необходимые проверки, изображения должны иметь превью – уменьшаться согласно настройкам в админ панели и иметь оригинальные размеры.

Создать возможность, для авторизованного пользователя, редактировать комментарии оставленные к его изображению (новости), так же удалять комментарий полностью.
Запретить добавление комментариев вообще.

Т.е. человек зашел на сайт, загрузил картинки и покинул сайт. (картинки либо отправились на модерацию, либо опубликовались.

Человек зарегистрировался и добавил изображения, картинки либо отправились на модерацию, либо опубликовались, так же отобразились в личном кабинете (превью) с комментариями, где пользователь имеет возможность подключить комментарии, отключить, редактировать или удалять.

Файл отвечающий за добавление новостей (полный со всеми лишними функциями - текст и т.д.)

<?php
/*
=====================================================
DataLife Engine - by SoftNews Media Group
-----------------------------------------------------

http://dle-news.ru/
-----------------------------------------------------
Copyright © 2004,2012 SoftNews Media Group
=====================================================
Данный код защищен авторскими правами
=====================================================
Файл: addnews.php
-----------------------------------------------------
Назначение: Добавление новости посетителем
=====================================================
*/


if( ! defined( 'DATALIFEENGINE' ) ) {
die( "Hacking attempt!" );
}

$allow_addnews = true;

include_once ENGINE_DIR . '/classes/parse.class.php';
$parse = new ParseFilter( Array (), Array (), 1, 1 );

if( $config['max_moderation'] AND ! $user_group[$member_id['user_group']]['moderation'] ) {

$stats_approve = $db->super_query( "SELECT COUNT(*) as count FROM " . PREFIX . "_post WHERE approve != '1'" );
$stats_approve = $stats_approve['count'];

if( $stats_approve >= $config['max_moderation'] ) $allow_addnews = false;

}

if ($is_logged AND $config['news_restricted'] AND (($_TIME - $member_id['reg_date']) < ($config['news_restricted'] * 86400)) ) {
$lang['add_err_9'] = str_replace( '{days}', intval($config['news_restricted']), $lang['news_info_7'] );
$allow_addnews = false;
}

if( $member_id['restricted'] and $member_id['restricted_days'] and $member_id['restricted_date'] < $_TIME ) {

$member_id['restricted'] = 0;
$db->query( "UPDATE LOW_PRIORITY " . USERPREFIX . "_users SET restricted='0', restricted_days='0', restricted_date='' WHERE user_id='{$member_id['user_id']}'" );

}

if( $member_id['restricted'] == 1 or $member_id['restricted'] == 3 ) {

if( $member_id['restricted_days'] ) {

$lang['news_info_4'] = str_replace( '{date}', langdate( "j M Y H:i", $member_id['restricted_date'] ), $lang['news_info_4'] );
$lang['add_err_9'] = $lang['news_info_4'];

} else {

$lang['add_err_9'] = $lang['news_info_5'];

}

$allow_addnews = false;

}

if( ! $allow_addnews ) {

msgbox( $lang['all_info'], $lang['add_err_9'] . "<br /><br /><a href=\"javascript:history.go(-1)\">$lang[all_prev]</a>" );

} else {

if( isset( $_REQUEST['mod'] ) and $_REQUEST['mod'] == "addnews" and $is_logged and $user_group[$member_id['user_group']]['allow_adds'] ) {

$stop = "";

if( $config['sec_addnews'] ) {

$id_key = $_POST[$_SESSION['id_key']];

if( $id_key == "" or $id_key != $dle_login_hash ) $stop .= "<li>ANTISPAM: User ID not valid</li>";

if (clean_url($_SERVER['HTTP_REFERER']) != clean_url($_SERVER['HTTP_HOST'])) $stop .= "<li>ANTISPAM: User ID not valid</li>";

}


$allow_comm = intval( $_POST['allow_comm'] );

if( $user_group[$member_id['user_group']]['allow_main'] ) $allow_main = intval( $_POST['allow_main'] );
else $allow_main = 0;

$approve = intval( $_POST['approve'] );
$allow_rating = intval( $_POST['allow_rating'] );

if( $user_group[$member_id['user_group']]['allow_fixed'] ) $news_fixed = intval( $_POST['news_fixed'] );
else $news_fixed = 0;

if( !count( $_POST['catlist'] ) ) {
$catlist = array ();
$catlist[] = '0';
} else
$catlist = $_POST['catlist'];

$category_list = array();

foreach ( $catlist as $value ) {
$category_list[] = intval($value);
}

$category_list = $db->safesql( implode( ',', $category_list ) );

if( ! $config['allow_add_tags'] ) $_POST['tags'] = "";
elseif( @preg_match( "/[\||\<|\>|\"|\!|\?|\$|\@|\/|\\\|\&\~\*\+]/", $_POST['tags'] ) ) $_POST['tags'] = "";
else $_POST['tags'] = @$db->safesql( htmlspecialchars( strip_tags( stripslashes( trim( $_POST['tags'] ) ) ), ENT_COMPAT, $config['charset'] ) );

if ( $_POST['tags'] ) {

$temp_array = array();
$tags_array = array();
$temp_array = explode (",", $_POST['tags']);

if (count($temp_array)) {

foreach ( $temp_array as $value ) {
if( trim($value) ) $tags_array[] = trim( $value );
}

}


if ( count($tags_array) ) $_POST['tags'] = implode(", ", $tags_array); else $_POST['tags'] = "";

}

if( ! $user_group[$member_id['user_group']]['moderation'] ) {
$approve = 0;
$allow_comm = 1;
$allow_main = 1;
$allow_rating = 1;
$news_fixed = 0;
}

if( $approve ) $msg = $lang['add_ok_1'];
else $msg = $lang['add_ok_2'];

$allow_list = explode( ',', $user_group[$member_id['user_group']]['cat_add'] );

if( $user_group[$member_id['user_group']]['moderation'] ) {
foreach ( $catlist as $selected ) {
if( $allow_list[0] != "all" and ! in_array( $selected, $allow_list ) and $member_id['user_group'] != "1" ) {
$approve = 0;
$msg = $lang['add_ok_3'];
}
}
}



$allow_list = explode( ',', $user_group[$member_id['user_group']]['cat_allow_addnews'] );

if( $allow_list[0] != "all" ) {
foreach ( $catlist as $selected ) {
if( !in_array( $selected, $allow_list ) AND $member_id['user_group'] != "1" ) {
$stop .= "<li>" . $lang['news_err_41'] . "</li>";
}
}
}



if ( !$user_group[$member_id['user_group']]['allow_html'] ) {

$config['allow_site_wysiwyg'] = 0;
$_POST['short_story'] = strip_tags ($_POST['short_story']);
$_POST['full_story'] = strip_tags ($_POST['full_story']);

}

if( $config['allow_site_wysiwyg'] ) {

$parse->allow_code = false;
$full_story = $db->safesql( $parse->BB_Parse( $parse->process( $_POST['full_story'] ) ) );
$short_story = $db->safesql( $parse->BB_Parse( $parse->process( $_POST['short_story'] ) ) );
$allow_br = 0;

} else {

$full_story = $db->safesql( $parse->BB_Parse( $parse->process( $_POST['full_story'] ), false ) );
$short_story = $db->safesql( $parse->BB_Parse( $parse->process( $_POST['short_story'] ), false ) );
$allow_br = 1;

}


if( $parse->not_allowed_text ) {
$stop .= "<li>" . $lang['news_err_39'] . "</li>";
}


$parse->ParseFilter();
$title = $db->safesql( $parse->process( trim( strip_tags ($_POST['title']) ) ) );
$alt_name = trim( $parse->process( stripslashes( $_POST['alt_name'] ) ) );


if( $config['safe_xfield'] ) {
$parse->ParseFilter();
$parse->safe_mode = true;
} else {
$parse = new ParseFilter( Array (), Array (), 1, 1 );
}

$add_module = "yes";
$xfieldsaction = "init";
$category = $catlist;
include (ENGINE_DIR . '/inc/xfields.php');

if( $alt_name == "" or ! $alt_name ) $alt_name = totranslit( stripslashes( $title ), true, false );
else $alt_name = totranslit( $alt_name, true, false );

if( $title == "" or ! $title ) $stop .= $lang['add_err_1'];
if( dle_strlen( $title, $config['charset'] ) > 200 ) $stop .= $lang['add_err_2'];

if ($config['create_catalog']) $catalog_url = $db->safesql( dle_substr( htmlspecialchars( strip_tags( stripslashes( trim( $title ) ) ), ENT_QUOTES, $config['charset'] ), 0, 1, $config['charset'] ) ); else $catalog_url = "";

if ( $user_group[$member_id['user_group']]['disable_news_captcha'] AND $member_id['news_num'] >= $user_group[$member_id['user_group']]['disable_news_captcha'] ) {

$user_group[$member_id['user_group']]['news_question'] = false;
$user_group[$member_id['user_group']]['news_sec_code'] = false;

}

if( $user_group[$member_id['user_group']]['news_sec_code']) {

if ($config['allow_recaptcha']) {

require_once ENGINE_DIR . '/classes/recaptcha.php';
$sec_code = 1;
$sec_code_session = false;

if ($_POST["recaptcha_response_field"] AND $_POST["recaptcha_response_field"]) {

$resp = recaptcha_check_answer ($config['recaptcha_private_key'],
$_SERVER["REMOTE_ADDR"],
$_POST["recaptcha_challenge_field"],
$_POST["recaptcha_response_field"]);

if (!$resp->is_valid) {

$stop .= "<li>" . $lang['news_err_30'] . "</li>";

}

}
else $stop .= "<li>" . $lang['news_err_30'] . "</li>";

} elseif( $_REQUEST['sec_code'] != $_SESSION['sec_code_session'] OR !$_SESSION['sec_code_session'] ) $stop .= "<li>" . $lang['news_err_30'] . "</li>";


}

if( $user_group[$member_id['user_group']]['news_question'] ) {

if ( intval($_SESSION['question']) ) {

$answer = $db->super_query("SELECT id, answer FROM " . PREFIX . "_question WHERE id='".intval($_SESSION['question'])."'");

$answers = explode( "\n", $answer['answer'] );

$pass_answer = false;

if( function_exists('mb_strtolower') ) {
$question_answer = trim(mb_strtolower($_POST['question_answer'], $config['charset']));
} else {
$question_answer = trim(strtolower($_POST['question_answer']));
}

if( count($answers) AND $question_answer ) {
foreach( $answers as $answer ){

if( function_exists('mb_strtolower') ) {
$answer = trim(mb_strtolower($answer, $config['charset']));
} else {
$answer = trim(strtolower($answer));
}

if( $answer AND $answer == $question_answer ) {
$pass_answer = true;
break;
}
}
}


if( !$pass_answer ) $stop .= $lang['reg_err_24'];

} else $stop .= $lang['reg_err_24'];

}

if( $user_group[$member_id['user_group']]['flood_news'] ) {
if( flooder( $member_id['name'], $user_group[$member_id['user_group']]['flood_news'] )) {
$stop .= "<li>" .$lang['news_err_4'] . " " . $lang['news_err_43'] . " {$user_group[$member_id['user_group']]['flood_news']} " . $lang['news_err_6']. "</li>";
}
}


$max_detected = false;
if( $user_group[$member_id['user_group']]['max_day_news'] ) {
$row = $db->super_query( "SELECT COUNT(*) as count FROM " . PREFIX . "_post WHERE date >= '".date("Y-m-d", $_TIME)."' AND date < '".date("Y-m-d", $_TIME)."' + INTERVAL 24 HOUR AND autor = '{$member_id['name']}'");
if ($row['count'] >= $user_group[$member_id['user_group']]['max_day_news'] ) {
$stop .= "<li>" .$lang['news_err_44'] . "</li>";
$max_detected = true;
}
}


if( $stop ) {
$stop = "<ul>" . $stop . "</ul><a href=\"javascript:history.go(-1)\">$lang[all_prev]</a>";
msgbox( $lang['add_err_6'], $stop );
}

if( ! $stop ) {

$_SESSION['sec_code_session'] = 0;
$_SESSION['question'] = false;
$id = (isset( $_REQUEST['id'] )) ? intval( $_REQUEST['id'] ) : 0;
$found = false;

if( $id ) {
$row = $db->super_query( "SELECT id, autor, tags FROM " . PREFIX . "_post where id = '$id' and approve = '0'" );
if( $id == $row['id'] and ($member_id['name'] == $row['autor'] or $user_group[$member_id['user_group']]['allow_all_edit']) ) $found = true;
else $found = false;
}

if( $found ) {

$db->query( "UPDATE " . PREFIX . "_post set title='$title', short_story='$short_story', full_story='$full_story', xfields='$filecontents', category='$category_list', alt_name='$alt_name', allow_comm='$allow_comm', approve='$approve', allow_main='$allow_main', fixed='$news_fixed', allow_br='$allow_br', tags='" . $_POST['tags'] . "' WHERE id='$id'" );
$db->query( "UPDATE " . PREFIX . "_post_extras SET allow_rate='$allow_rating' WHERE news_id='{$id}'" );

// Облако тегов
if( $_POST['tags'] != $row['tags'] or $approve ) {
$db->query( "DELETE FROM " . PREFIX . "_tags WHERE news_id = '{$row['id']}'" );

if( $_POST['tags'] != "" and $approve ) {

$tags = array ();

$_POST['tags'] = explode( ",", $_POST['tags'] );

foreach ( $_POST['tags'] as $value ) {

$tags[] = "('" . $row['id'] . "', '" . trim( $value ) . "')";
}

$tags = implode( ", ", $tags );
$db->query( "INSERT INTO " . PREFIX . "_tags (news_id, tag) VALUES " . $tags );

}
}

}
else {

if ( $max_detected ) die( "Hacking attempt!" );
$added_time = time() + ($config['date_adjust'] * 60);
$thistime = date( "Y-m-d H:i:s", $added_time );

$db->query( "INSERT INTO " . PREFIX . "_post (date, autor, short_story, full_story, xfields, title, keywords, category, alt_name, allow_comm, approve, allow_main, fixed, allow_br, symbol, tags) values ('$thistime', '{$member_id['name']}', '$short_story', '$full_story', '$filecontents', '$title', '', '$category_list', '$alt_name', '$allow_comm', '$approve', '$allow_main', '$news_fixed', '$allow_br', '$catalog_url', '" . $_POST['tags'] . "')" );

$row['id'] = $db->insert_id();

$db->query( "INSERT INTO " . PREFIX . "_post_extras (news_id, allow_rate, user_id) VALUES('{$row['id']}', '$allow_rating', '{$member_id['user_id']}')" );

$member_id['name'] = $db->safesql($member_id['name']);

$db->query( "UPDATE " . PREFIX . "_images set news_id='{$row['id']}' where author = '{$member_id['name']}' AND news_id = '0'" );
$db->query( "UPDATE " . PREFIX . "_files set news_id='{$row['id']}' where author = '{$member_id['name']}' AND news_id = '0'" );
$db->query( "UPDATE " . USERPREFIX . "_users set news_num=news_num+1 where user_id='{$member_id['user_id']}'" );

if( $user_group[$member_id['user_group']]['flood_news'] ) {
$db->query( "INSERT INTO " . PREFIX . "_flood (id, ip, flag) values ('$_TIME', '{$member_id['name']}', '1')" );
}

if( $_POST['tags'] != "" and $approve ) {

$tags = array ();

$_POST['tags'] = explode( ",", $_POST['tags'] );

foreach ( $_POST['tags'] as $value ) {

$tags[] = "('" . $row['id'] . "', '" . trim( $value ) . "')";
}

$tags = implode( ", ", $tags );
$db->query( "INSERT INTO " . PREFIX . "_tags (news_id, tag) VALUES " . $tags );

}

if( ! $approve and $config['mail_news'] ) {

include_once ENGINE_DIR . '/classes/mail.class.php';
$mail = new dle_mail( $config );

$row = $db->super_query( "SELECT template FROM " . PREFIX . "_email WHERE name='new_news' LIMIT 0,1" );

$row['template'] = stripslashes( $row['template'] );
$row['template'] = str_replace( "{%username%}", $member_id['name'], $row['template'] );
$row['template'] = str_replace( "{%date%}", langdate( "j F Y H:i", $added_time ), $row['template'] );
$row['template'] = str_replace( "{%title%}", stripslashes( stripslashes( $title ) ), $row['template'] );

$category_list = explode( ",", $category_list );
$my_cat = array ();

foreach ( $category_list as $element ) {

$my_cat[] = $cat_info[$element]['name'];

}

$my_cat = stripslashes( implode( ', ', $my_cat ) );

$row['template'] = str_replace( "{%category%}", $my_cat, $row['template'] );

$mail->send( $config['admin_mail'], $lang['mail_news'], $row['template'] );

}

}


if( $config['allow_alt_url'] == "yes" ) msgbox( $lang['add_ok'], "{$msg} <a href=\"{$config['http_home_url']}" . "addnews.html\">$lang[add_noch]</a> $lang[add_or] <a href=\"{$config['http_home_url']}\">$lang[all_prev]</a>" );
else msgbox( $lang['add_ok'], "{$msg} <a href=\"$PHP_SELF?do=addnews\">$lang[add_noch]</a> $lang[add_or] <a href=\"{$config['http_home_url']}\">$lang[all_prev]</a>" );

if( $approve ) {

clear_cache( array('news_', 'related_', 'tagscloud_', 'archives_', 'calendar_', 'topnews_', 'rss') );


}

}

}
elseif( $is_logged and $user_group[$member_id['user_group']]['allow_adds'] ) {

$tpl->load_template( 'addnews.tpl' );

$addtype = "addnews";

if ( !$user_group[$member_id['user_group']]['allow_html'] ) {

$config['allow_site_wysiwyg'] = 0;

}

if( $config['allow_site_wysiwyg'] ) {

include_once ENGINE_DIR . '/editor/shortsite.php';
include_once ENGINE_DIR . '/editor/fullsite.php';
$bb_code = "";

} else {
$bb_editor = true;
include_once ENGINE_DIR . '/modules/bbcode.php';
}

if( !$config['allow_site_wysiwyg'] ) {

$tpl->set( '[not-wysywyg]', '' );
$tpl->set( '[/not-wysywyg]', '' );

} else
$tpl->set_block( "'\\[not-wysywyg\\].*?\\[/not-wysywyg\\]'si", '' );

if( $config['allow_site_wysiwyg'] ) {

$tpl->set( '{shortarea}', $shortarea );
$tpl->set( '{fullarea}', $fullarea );

} else {
$tpl->set( '{shortarea}', '' );
$tpl->set( '{fullarea}', '' );
}

$id = (isset( $_REQUEST['id'] )) ? intval( $_REQUEST['id'] ) : 0;
$found = false;

if( $id ) {
$row = $db->super_query( "SELECT * FROM " . PREFIX . "_post LEFT JOIN " . PREFIX . "_post_extras ON (" . PREFIX . "_post.id=" . PREFIX . "_post_extras.news_id) WHERE id = '{$id}' and approve = '0'" );
if( $id == $row['id'] and ($member_id['name'] == $row['autor'] or $user_group[$member_id['user_group']]['allow_all_edit']) ) $found = true;
else $found = false;
}

if( $found ) {

$cat_list = explode( ',', $row['category'] );
$categories_list = CategoryNewsSelection( $cat_list, 0 );
$tpl->set( '{title}', $parse->decodeBBCodes( $row['title'], false ) );
$tpl->set( '{alt-name}', $row['alt_name'] );

if( $config['allow_site_wysiwyg'] or $row['allow_br'] != '1' ) {
$row['short_story'] = $parse->decodeBBCodes( $row['short_story'], TRUE, $config['allow_site_wysiwyg'] );
$row['full_story'] = $parse->decodeBBCodes( $row['full_story'], TRUE, $config['allow_site_wysiwyg'] );
} else {
$row['short_story'] = $parse->decodeBBCodes( $row['short_story'], false );
$row['full_story'] = $parse->decodeBBCodes( $row['full_story'], false );
}

$tpl->set( '{short-story}', $row['short_story'] );
$tpl->set( '{full-story}', $row['full_story'] );
$tpl->set( '{tags}', $row['tags'] );

} else {

$categories_list = CategoryNewsSelection( 0, 0 );
$tpl->set( '{title}', '' );
$tpl->set( '{alt-name}', '' );
$tpl->set( '{short-story}', '' );
$tpl->set( '{full-story}', '' );
$tpl->set( '{tags}', '' );

}

$xfieldsaction = "categoryfilter";
include_once ENGINE_DIR . '/inc/xfields.php';

if( $config['allow_multi_category'] ) {

$cats = "<select data-placeholder=\"{$lang['addnews_cat_sel']}\" name=\"catlist[]\" id=\"category\" onchange=\"onCategoryChange(this)\" style=\"width:350px;height:140px;\" multiple=\"multiple\">";

} else {

$cats = "<select data-placeholder=\"{$lang['addnews_cat_sel']}\" name=\"catlist[]\" id=\"category\" onchange=\"onCategoryChange(this)\" style=\"width:350px;\">";
}

$cats .= $categories_list;
$cats .= "</select>";

$tpl->set( '{bbcode}', $bb_code );
$tpl->set( '{category}', $cats );

if( $user_group[$member_id['user_group']]['moderation'] ) {

$admintag = "<input type=\"checkbox\" name=\"allow_comm\" id=\"allow_comm\" value=\"1\" checked=\"checked\" /> <label for=\"allow_comm\">" . $lang['add_al_com'] . "</label>";

if( $user_group[$member_id['user_group']]['allow_main'] ) $admintag .= "    <input type=\"checkbox\" name=\"allow_main\" id=\"allow_main\" value=\"1\" checked=\"checked\" /> <label for=\"allow_main\">" . $lang['add_al_m'] . "</label>";

$admintag .= "<br /><input type=\"checkbox\" name=\"approve\" id=\"approve\" value=\"1\" checked=\"checked\" /><label for=\"approve\"> {$lang['add_al_ap']}</label><br /><input type=\"checkbox\" name=\"allow_rating\" id=\"allow_rating\" value=\"1\" checked=\"checked\" /><label for=\"allow_rating\"> {$lang['addnews_allow_rate']}</label>";

if( $user_group[$member_id['user_group']]['allow_fixed'] ) $admintag .= "<br /><input type=\"checkbox\" name=\"news_fixed\" id=\"news_fixed\" value=\"1\" /><label for=\"news_fixed\"> {$lang['add_al_fix']}</label>";

$tpl->set( '{admintag}', $admintag );

} else
$tpl->set( '{admintag}', '' );

if( $is_logged and $member_id['user_group'] < 3 ) {

$tpl->set( '[urltag]', '' );
$tpl->set( '[/urltag]', '' );

} else
$tpl->set_block( "'\\[urltag\\].*?\\[/urltag\\]'si", "" );

if( $found ) {

$xfieldsaction = "list";
$xfieldmode = "site";
$xfieldsid = $row['xfields'];
$xfieldscat = $row['category'];
include (ENGINE_DIR . '/inc/xfields.php');

} else {

$xfieldsaction = "list";
$xfieldmode = "site";
$xfieldsadd = true;
include (ENGINE_DIR . '/inc/xfields.php');

}

if( !$config['allow_site_wysiwyg'] ) $output = str_replace("<!--panel-->", $bb_code, $output);

$tpl->set( '{xfields}', $output );

if ( $user_group[$member_id['user_group']]['disable_news_captcha'] AND $member_id['news_num'] >= $user_group[$member_id['user_group']]['disable_news_captcha'] ) {

$user_group[$member_id['user_group']]['news_question'] = false;
$user_group[$member_id['user_group']]['news_sec_code'] = false;

}

if( $user_group[$member_id['user_group']]['news_question'] ) {

$tpl->set( '[question]', "" );
$tpl->set( '[/question]', "" );

$question = $db->super_query("SELECT id, question FROM " . PREFIX . "_question ORDER BY RAND() LIMIT 1");
$tpl->set( '{question}', htmlspecialchars( stripslashes( $question['question'] ), ENT_QUOTES, $config['charset'] ) );

$_SESSION['question'] = $question['id'];

} else {

$tpl->set_block( "'\\[question\\](.*?)\\[/question\\]'si", "" );
$tpl->set( '{question}', "" );

}

if( $user_group[$member_id['user_group']]['news_sec_code'] ) {

if ( $config['allow_recaptcha'] ) {

$tpl->set( '[recaptcha]', "" );
$tpl->set( '[/recaptcha]', "" );

$tpl->set( '{recaptcha}', '
<script language="javascript" type="text/javascript">
<!--
var RecaptchaOptions = {
theme:
\''.$config['recaptcha_theme'].'\',
lang:
\''.$lang['wysiwyg_language'].'\'
};

//-->
</script>
<script type="text/javascript" src="http://www.google.com/recaptcha/api/challenge?k='
.$config['recaptcha_public_key'].'"></script>' );

$tpl->set_block( "'\\[sec_code\\](.*?)\\[/sec_code\\]'si", "" );
$tpl->set( '{reg_code}', "" );

} else {

$tpl->set( '[sec_code]', "" );
$tpl->set( '[/sec_code]', "" );
$path = parse_url( $config['http_home_url'] );
$tpl->set( '{sec_code}', "<span id=\"dle-captcha\"><img src=\"" . $path['path'] . "engine/modules/antibot.php\" alt=\"${lang['sec_image']}\" /><br /><a onclick=\"reload(); return false;\" href=\"#\">{$lang['reload_code']}</a></span>" );
$tpl->set_block( "'\\[recaptcha\\](.*?)\\[/recaptcha\\]'si", "" );
$tpl->set( '{recaptcha}', "" );
}

}
else {

$tpl->set( '{sec_code}', "" );
$tpl->set( '{recaptcha}', "" );
$tpl->set_block( "'\\[recaptcha\\](.*?)\\[/recaptcha\\]'si", "" );
$tpl->set_block( "'\\[sec_code\\](.*?)\\[/sec_code\\]'si", "" );

}

if (!isset($path['path'])) $path['path'] = "/";

$script = "
<script language=
\"javascript\" type=\"text/javascript\">
<!--
function preview(){"
;

if( $config['allow_site_wysiwyg'] == "1" ) {

$script .= "submit_all_data();";

}

$script .= "if(document.entryform.title.value == ''){ DLEalert('$lang[add_err_7]', dle_info); }
else{
dd=window.open('','prv','height=400,width=750,resizable=0,scrollbars=1')
document.entryform.mod.value='preview';document.entryform.action='
{$config['http_home_url']}engine/preview.php';document.entryform.target='prv'
document.entryform.submit();dd.focus()
setTimeout(
\"document.entryform.mod.value='addnews';document.entryform.action='';document.entryform.target='_self '\",500)
}
}"
;

$script .= <<<HTML

function reload () {

var rndval = new Date().getTime();

document.getElementById('dle-captcha').innerHTML = '<img src="
{$path['path']}engine/modules/antibot.php?rndval=' + rndval + '" width="120" height="50" alt="" /><br /><a onclick="reload(); return false;" href="#">{$lang['reload_code']}</a>';

};

function checkxf ( )
{

var status = '';

$('[uid=
\"essential\"]:visible').each(function(indx) {

if($.trim($(this).find('[rel=
\"essential\"]').val()).length < 1) {

DLEalert('
{$lang['addnews_xf_alert']}', dle_info);

status = 'fail';

}

});

if(document.entryform.title.value == ''){

DLEalert('
{$lang['add_err_7']}', dle_info);

status = 'fail';

}

return status;

};
//-->
</script>

HTML;

if( $config['allow_add_tags'] ) {
$js_array[] = "engine/skins/autocomplete.js";
$script .= "
<script language=
\"javascript\" type=\"text/javascript\">
<!--
$(function(){
function split( val ) {
return val.split( /,\s*/ );
}
function extractLast( term ) {
return split( term ).pop();
}

$( '#tags' ).autocomplete({
source: function( request, response ) {
$.getJSON( 'engine/ajax/find_tags.php', {
term: extractLast( request.term )
}, response );
},
search: function() {
var term = extractLast( this.value );
if ( term.length < 3 ) {
return false;
}
},
focus: function() {
return false;
},
select: function( event, ui ) {
var terms = split( this.value );
terms.pop();
terms.push( ui.item.value );
terms.push( '' );
this.value = terms.join( ', ' );
return false;
}
});

});
//-->
</script>"
;
}

$script .= "<form method=\"post\" name=\"entryform\" id=\"entryform\" onsubmit=\"if(checkxf()=='fail') return false;\" action=\"\">";

if( $config['sec_addnews'] ) {

$salt = str_shuffle("abchefghjkmnpqrstuvwxyz");
$random_key = "";

for($i = 0; $i < 8; $i ++) {
$random_key .= $salt{mt_rand( 0, 23 )};
}

$_SESSION['id_key'] = $random_key;

$random_key = "<input name=\"{$random_key}\" type=\"hidden\" value=\"{$dle_login_hash}\" />";

} else
$random_key = "";

$tpl->copy_template = $categoryfilter . $script . $tpl->copy_template . "<input type=\"hidden\" name=\"mod\" value=\"addnews\" />{$random_key}</form>";

$tpl->compile( 'content' );
$tpl->clear();

} else
msgbox( $lang['all_info'], "$lang[add_err_8]<br /><a href=\"javascript:history.go(-1)\">$lang[all_prev]</a>" );

}
?>


.tpl файл добавления новостей

<link rel="stylesheet" type="text/css" href="engine/skins/chosen/chosen.css"/>
<script
type="text/javascript" src="engine/skins/chosen/chosen.js"></script>
<script
type="text/javascript">
$(function(){
$('#category').chosen({allow_single_deselect:true, no_results_text: 'Ничего не найдено'});
});
</script>
<div
class="pheading"><h2>Добавить новость</h2></div>
<div
class="baseform">
<table
class="tableform">
<tr>
<td
class="label">
Заголовок:<span class="impot">*</span>
</td>
<td><input
type="text" name="title" value="{title}" maxlength="150" class="f_input" /></td>
</tr>

[urltag]
<tr>
<td
class="label">URL статьи:</td>
<td><input
type="text" name="alt_name" value="{alt-name}" maxlength="150" class="f_input" /></td>
</tr>

[/urltag]
<tr>
<td
class="label">
Категория:<span class="impot">*</span>
</td>
<td>
{category}</td>
</tr>
<tr>
<td
colspan="2">
<b>
Вводная часть: <span class="impot">*</span></b> (Обязательно)
<div>
[not-wysywyg]
<div>{bbcode}</div>
<textarea
name="short_story" id="short_story" onfocus="setFieldName(this.name)" style="width:98%;" rows="15" class="f_textarea" >{short-story}</textarea>
[/not-wysywyg]
{shortarea}
</div>
</td>
</tr>
<tr>
<td
colspan="2">
<b>
Подробная часть:</b> (Необязательно)
<div>
[not-wysywyg]
<div>{bbcode}</div>
<textarea
name="full_story" id="full_story" onfocus="setFieldName(this.name)" style="width:98%;" rows="20" class="f_textarea" >{full-story}</textarea>
[/not-wysywyg]
{fullarea}
</div>
</td>
</tr>

{xfields}
<tr>
<td
class="label">Ключевые слова для облака тегов:</td>
<td><input
type="text" name="tags" id="tags" value="{tags}" maxlength="150" class="f_input" autocomplete="off" /></td>
</tr>

[question]
<tr>
<td
class="label">
Вопрос:
</td>
<td>
<div>
{question}</div>
</td>
</tr>
<tr>
<td
class="label">
Ответ:<span class="impot">*</span>
</td>
<td>
<div><input
type="text" name="question_answer" class="f_input" /></div>
</td>
</tr>

[/question]
[sec_code]
<tr>
<td
class="label">
Введите код<br />с картинки:<span class="impot">*</span>
</td>
<td>
<div>
{sec_code}</div>
<div><input
type="text" name="sec_code" id="sec_code" style="width:115px" class="f_input" /></div>
</td>
</tr>

[/sec_code]
[recaptcha]
<tr>
<td
class="label">
Введите два слова,<br />показанных на изображении:<span class="impot">*</span>
</td>
<td>
<div>
{recaptcha}</div>
</td>
</tr>

[/recaptcha]
<tr>
<td
colspan="2">{admintag}</td>
</tr>
</table>
<div
class="fieldsubmit">
<button
name="add" class="fbutton" type="submit"><span>Отправить</span></button>
<button
name="nview" onclick="preview()" class="fbutton" type="submit"><span>Просмотр</span></button>
</div>
</div>


Так же имеются файлы вывода редактора, которые можно, наверное не использовать.

Достаточно сделать кнопку загрузки файлов, и массовой загрузки с возможностью вписать название изображения, можно теги (опционально добавить) и все.
Как-то сделать возможным одновременно создать несколько новостей (массовое добавление файлов), может как здесь - http://piclive.ru/ - зеленый плюсик рядом с "Загрузить"

Желательно, конечно, сделать все удобнее и функциональнее.

Движок готов предоставить, при необходимости и хостинг.
Подразумеваю, что править придется не только 2 представленных выше файла.
PicLive
Для массовой загрузки, возможно использовать это - http://www.uploadify.com/
Игорь_Vasinsky
$1,5k - на первый взгляд, если внимательно вчитаться в первый пост

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Игорь_Vasinsky
$1к - самопис с нужным функционалом и ничего лишнего

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
PicLive
Мне за 400$ предлагают, счел это не реальным, основываясь на стоимости самой cms - 50$
У меня есть cms специально заточенная под хостинг, даже 2, но и в той и в другой не достаточно функций, в одной нет регистрации, в другой комментариев и т.д.
1000$ не реально, извините.

Вот такие скрипты имеются у меня:

http://pay-debts.ru/ - есть регистрация, но очень мало функций в личном кабинете, комментарии по какой-то причине, возможны только для собственных фото, нет личных сообщения для пользователей и т.д. Мини админка.
http://piclive.ru/ - нет регистрации, нет личных сообщений, есть комментарии. Админка.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.