Next Generation CMS :: Форум поддержки

Заинтересовала наша система? Тогда этот форум для Вас!

Вы не зашли.

#1 2010-04-17 02:39:47

greenpiss
Участник
Откуда Saint-Petersburg
Зарегистрирован: 2008-10-18
Сообщений: 100
Рейтинг :   

добавление новостей

Знаю, что функция была вырезана.
Можно ли сделать форму добавления новостей на сайт как-нибудь через шаблон сайта (как когда-то было раньше на 2z, было ли здесь - не знаю), а не через админку? нужно чтобы зарегистрированные пользователи могли добавлять новости (через премодерацию, естественно), но не палили админ-панель...

Не в сети

#2 2010-04-17 03:20:22

vitaly
Администратор
Откуда Россия
Зарегистрирован: 2008-10-08
Сообщений: 2,823
Рейтинг :   118 

Re: добавление новостей

greenpiss, новая панель добавления новостей значительно шире старой, в итоге она практически ни в один дизайн не могла влезть.
А чем тебе не нравится "палево" админки?

Не в сети

#3 2010-04-17 21:05:19

greenpiss
Участник
Откуда Saint-Petersburg
Зарегистрирован: 2008-10-18
Сообщений: 100
Рейтинг :   

Re: добавление новостей

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

Не в сети

#4 2010-04-17 21:13:31

infinity237
Модератор
Откуда Russia, Moscow
Зарегистрирован: 2008-11-09
Сообщений: 2,674
Рейтинг :   176 
Сайт

Re: добавление новостей

Кстати поддерживаю идею. Ещё сделать возможность добавления незареганными пользователями с капчей/без капчи.
Однозначно надо делать как плагин, а не наращивать CMS.

Изменено infinity237 (2010-04-17 21:14:11)

Не в сети

#5 2010-04-17 22:48:19

Евгений
Модератор
Откуда Россия
Зарегистрирован: 2009-04-08
Сообщений: 1,014
Рейтинг :   38 
Сайт

Re: добавление новостей

infinity237, +1


I NGeneration CMS

Не в сети

#6 2010-04-18 09:55:35

Wolverine
Модератор
Откуда Домодедово
Зарегистрирован: 2008-10-13
Сообщений: 3,538
Рейтинг :   160 
Сайт

Re: добавление новостей

Готовим лавэ, пацанчики (c)

Не в сети

#7 2010-04-18 14:05:45

kaBazulla
Участник
Откуда Ukraine
Зарегистрирован: 2008-11-24
Сообщений: 44
Рейтинг :   

Re: добавление новостей

infinity237 пишет:

Ещё сделать возможность добавления незареганными пользователями с капчей/без капчи.

Было бы шоколадно smile

Не в сети

#8 2010-04-21 20:32:14

#Q#
Участник
Откуда где то в пространстве...
Зарегистрирован: 2009-04-08
Сообщений: 115
Рейтинг :   
Сайт

Re: добавление новостей

infinity237 пишет:

Кстати поддерживаю идею. Ещё сделать возможность добавления незареганными пользователями с капчей/без капчи.
Однозначно надо делать как плагин, а не наращивать CMS.

+1 Вот как раз это и надо! Чтоб незарегистрированные пользователи (с каптчей) могли добавлять новости!


Поединок Добра и Зла происходит каждую секунду в сердце каждого человека, ибо сердце и есть поле битвы, где сражаются ангелы и демоны. (Пауло Коэльо)

Не в сети

#9 2010-04-27 20:09:30

FlatFX
Участник
Откуда SPB
Зарегистрирован: 2010-04-27
Сообщений: 39
Рейтинг :   
Сайт

Re: добавление новостей

vitaly пишет:

новая панель добавления новостей значительно шире старой, в итоге она практически ни в один дизайн не могла влезть.
А чем тебе не нравится "палево" админки?

Ну как же так? Текст ареа+ббкоды+капча и всё это на статической странице, зачем юзеру целая панель? smile

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

А то мне пришлось всех юзеров сделать журналистами...:(

Не в сети

#10 2010-04-27 23:45:53

vitaly
Администратор
Откуда Россия
Зарегистрирован: 2008-10-08
Сообщений: 2,823
Рейтинг :   118 

Re: добавление новостей

FlatFX пишет:

Ну как же так? Текст ареа+ббкоды+капча и всё это на статической странице, зачем юзеру целая панель? smile

Плюс отдельная панель с выбором категории и флагами.. smile

Не в сети

#11 2010-04-27 23:46:49

infinity237
Модератор
Откуда Russia, Moscow
Зарегистрирован: 2008-11-09
Сообщений: 2,674
Рейтинг :   176 
Сайт

Re: добавление новостей

Должно входить. Если не будет нужно делить на вкладки.

Не в сети

#12 2010-04-27 23:52:42

FlatFX
Участник
Откуда SPB
Зарегистрирован: 2010-04-27
Сообщений: 39
Рейтинг :   
Сайт

Re: добавление новостей

vitaly пишет:
FlatFX пишет:

Ну как же так? Текст ареа+ббкоды+капча и всё это на статической странице, зачем юзеру целая панель? smile

Плюс отдельная панель с выбором категории и флагами.. smile

Ну как... Я себе это так представляю:
1. выбор категории
2. бб-код
3. текст ареа
4. Сабмит

То есть это как добавление коммента выходит, только с категорией.
А то меня напрягает, что у меня все юзеры журналисты и все в админку могут заходить. smile

Я просто не знаю принципа работы, так бы сам попробовал что-нибудь предпринять... Ну то есть создать темплейт на основе статической страницы, контент не учитывать, а вот тут начинаются проблемы, я так понимаю инклудом addnews.php тут не обойдёшься... big_smile

Не в сети

#13 2010-04-27 23:54:10

Wolverine
Модератор
Откуда Домодедово
Зарегистрирован: 2008-10-13
Сообщений: 3,538
Рейтинг :   160 
Сайт

Re: добавление новостей

Оттуда можно вытащить все функции smile

Не в сети

#14 2010-04-28 00:00:38

FlatFX
Участник
Откуда SPB
Зарегистрирован: 2010-04-27
Сообщений: 39
Рейтинг :   
Сайт

Re: добавление новостей

Так там одна большая функия function news_add(), в ней много лишнего для добавления не из админки... А если клонировать сам файл, то это ещё хуже получится...)

Не в сети

#15 2010-04-28 00:07:22

Wolverine
Модератор
Откуда Домодедово
Зарегистрирован: 2008-10-13
Сообщений: 3,538
Рейтинг :   160 
Сайт

Re: добавление новостей

Лишнего там ничего нет smile Скорее придется дописывать что-то свое при реализации плагина

Не в сети

#16 2010-04-28 01:16:25

FlatFX
Участник
Откуда SPB
Зарегистрирован: 2010-04-27
Сообщений: 39
Рейтинг :   
Сайт

Re: добавление новостей

Сообщу об "успехах", теперь новость на сайт могут добавлять и опубликовывать все все все...:D:D:D

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

Назвал файл add.php и поместил в папку engine...

<?php
@include_once 'core.php';
if (!defined('NGCMS')) die ('HAL');
if ($userROW['status'] > 4) {
	@header("Location: ".home);
	exit;
}
if ($userROW['status'] < 1) {
	@header("Location: ".home);
	exit;
}

require("./actions/addnews.php");

Проблема в том, что в файле addnews.php (для опытов использовал другое название) отказывается выполнять это:

$template['vars']['mainblock'] .= $tpl -> show('addnews');

То есть в шаблон сайта никак не воткнуть результат отработки скрипта... sad

Изменено FlatFX (2010-04-28 03:19:57)

Не в сети

#17 2010-04-29 15:00:44

FlatFX
Участник
Откуда SPB
Зарегистрирован: 2010-04-27
Сообщений: 39
Рейтинг :   
Сайт

Re: добавление новостей

Ошибка: Вызываемый метод недоступен для плагина 'addnews' *WALL*

Причём даже если я ничего в php файле не произвожу...

	$tpl -> template('addnews', $tpath['addnews']);
	$tpl -> vars('addnews', $tvars);
	
	$output = $tpl -> show('addnews');
	$template['vars']['mainblock':'plugin_addnews'] = $output;

В этом коде может быть проблема?
Шаблон addnews.tpl есть и в папке tpl в плагине и папке темы...

Изменено FlatFX (2010-04-29 15:02:53)

Не в сети

#18 2010-04-29 15:02:57

Wolverine
Модератор
Откуда Домодедово
Зарегистрирован: 2008-10-13
Сообщений: 3,538
Рейтинг :   160 
Сайт

Re: добавление новостей

И? Выкладывай плагин посмотрим. Телепатов тут нет.

Не в сети

#19 2010-04-29 15:37:00

FlatFX
Участник
Откуда SPB
Зарегистрирован: 2010-04-27
Сообщений: 39
Рейтинг :   
Сайт

Re: добавление новостей

Ну, плагином это не назовёшь конечно...

<?php

if (!defined('NGCMS')) die ('HAL');

register_plugin_page('addnews','','',0);

@include_once root.'core.php';


if (!defined('NGCMS')) die ('HAL');
if ($userROW['status'] > 4) {
	@header("Location: ".home);
	exit;
}
if ($userROW['status'] < 1) {
	@header("Location: ".home);
	exit;
}

@include_once root.'includes/classes/upload.class.php';

$SYSTEM_FLAGS['info']['title']['group']	= $lang['loc_addnews'];

$lang = LoadLang('addnews', defined('ADMIN')?'admin':'site');

$situation = "news";

function addnews(){
	global $mysql, $lang, $userROW, $parse, $PFILTERS, $config, $catz, $catmap;
	global $c_day, $c_month, $c_year, $c_hour, $c_minute;


	$title = $_REQUEST['title'];
	$content = $_REQUEST['content'];
	$alt_name = $parse->translit( trim($_REQUEST['alt_name']), 1);


	// Check title
	if ( (!strlen(trim($title))) || (!strlen(trim($content))) ) {
		msg(array("type" => "error", "text" => $lang['msge_fields'], "info" => $lang['msgi_fields']));
		return 0;
	}

	$SQL['title'] = $title;

	// Check for dup if alt_name is specified
	if ($alt_name) {
		if ( is_array($mysql->record("select id from ".prefix."_news where alt_name = ".db_squote($alt_name)." limit 1")) ) {
			msg(array("type" => "error", "text" => $lang['msge_alt_name'], "info" => $lang['msgi_alt_name']));
			return;
		}
		$SQL['alt_name'] = $alt_name;
	} else {
		// Generate uniq alt_name if no alt_name specified
		$alt_name = strtolower($parse->translit(trim($title), 1));
		// Make a conversion:
		// * '.'  to '_'
		// * '__' to '_' (several to one)
		// * Delete leading/finishing '_'
		$alt_name = preg_replace(array('/\./', '/(_{2,20})/', '/^(_+)/', '/(_+)$/'), array('_', '_'), $alt_name);

		// Make alt_name equal to '_' if it appear to be blank after conversion
		if ($alt_name == '') $alt_name = '_';

		$i = '';
		while ( is_array($mysql->record("select id from ".prefix."_news where alt_name = ".db_squote($alt_name.$i)." limit 1")) ) {
			$i++;
		}
		$SQL['alt_name'] = $alt_name.$i;
	}

	if ($_REQUEST['customdate']) {
		$SQL['postdate'] = mktime($c_hour, $c_minute, 0, $c_month, $c_day, $c_year) + ($config['date_adjust'] * 60);
	} else {
		$SQL['postdate'] = time() + ($config['date_adjust'] * 60);
	}

	$SQL['editdate'] = $SQL['postdate'];

	// Fetch MASTER provided categories
	$catids = array ();
	if (intval($_POST['category']) && isset($catmap[intval($_POST['category'])])) {
		$catids[intval($_POST['category'])] = 1;
	}

	// Fetch ADDITIONAL provided categories
	foreach ($_POST as $k => $v) {
		if (preg_match('#^category_(\d+)$#', $k, $match) && $v && isset($catmap[intval($match[1])]))
			$catids[$match[1]] = 1;
	}

	if ($config['meta']) {
		$SQL['description']	= $_REQUEST['description'];
		$SQL['keywords']	= $_REQUEST['keywords'];
	}

	$SQL['author']		= $userROW['name'];
	$SQL['author_id']	= $userROW['id'];
	$SQL['catid']		= implode(",", array_keys($catids));

	// Use flag 'allow comments' only in case when plugin 'comments' is installed
	if (getPluginStatusInstalled('comments'))
		$SQL['allow_com']	= $_REQUEST['allow_com'];

	// Variable FLAGS is a bit-variable:
	// 0 = RAW mode		[if set, no conversion "\n" => "<br />" will be done]
	// 1 = HTML enable	[if set, HTML codes may be used in news]

	$SQL['flags'] = 0;
	switch ($userROW['status']) {
		case 1:		// admin can do anything
			$SQL['flags']	=	($_REQUEST['flag_RAW']?1:0) + ($_REQUEST['flag_HTML']?2:0);
			break;

		case 2:		// Editor. Check if we have permissions
			if (!$config['htmlsecure_2'])
				$SQL['flags']	=	($_REQUEST['flag_RAW']?1:0) + ($_REQUEST['flag_HTML']?2:0);
			break;

		case 3:		// Journalists. Check if we have permissions
			if (!$config['htmlsecure_3'])
				$SQL['flags']	=	($_REQUEST['flag_RAW']?1:0) + ($_REQUEST['flag_HTML']?2:0);
			break;

		case 4:		// Commentors. Check if we have permissions
			if (!$config['htmlsecure_4'])
				$SQL['flags']	=	($_REQUEST['flag_RAW']?1:0) + ($_REQUEST['flag_HTML']?2:0);
			break;
	}

	// This actions are allowed only for admins & Edtiors
	if (($userROW['status'] == 1)||($userROW['status'] == 2)) {
		$SQL['mainpage']	= intval($_REQUEST['mainpage']);
		$SQL['approve']		= intval($_REQUEST['approve']);
		$SQL['favorite']	= intval($_REQUEST['favorite']);
		$SQL['pinned']		= intval($_REQUEST['pinned']);
	}

	$content = str_replace("\r\n", "\n", $content);
	$SQL['content']		= $content;

	exec_acts('addnews');

	$pluginNoError = 1;
	if (is_array($PFILTERS['news']))
		foreach ($PFILTERS['news'] as $k => $v) {
			if (!($pluginNoError = $v->addNews($tvars, $SQL))) {
				msg(array("type" => "error", "text" => str_replace('{plugin}', $k, $lang['msge_pluginlock'])));
				break;
			}
		}

	if (!$pluginNoError) {
		return 0;
	}

	$vnames = array(); $vparams = array();
	foreach ($SQL as $k => $v) { $vnames[]  = $k; $vparams[] = db_squote($v); }

	$mysql->query("insert into ".prefix."_news (".implode(",",$vnames).") values (".implode(",",$vparams).")");
	$id = $mysql->result("SELECT LAST_INSERT_ID() as id");

	// Update category / user posts counter [ ONLY if news is approved ]
	if ($SQL['approve']) {
		if (count($catids)) {
			$mysql->query("update ".prefix."_category set posts=posts+1 where id in (".implode(", ",array_keys($catids)).")");
			foreach (array_keys($catids) as $catid) {
				$mysql->query("insert into ".prefix."_news_map (newsID, categoryID) values (".db_squote($id).", ".db_squote($catid).")");
			}
		}
		$mysql->query("update ".uprefix."_users set news=news+1 where id=".$SQL['author_id']);
	}

	if (is_array($PFILTERS['news']))
	foreach ($PFILTERS['news'] as $k => $v) { $v->addNewsNotify($tvars, $SQL, $id); }

	exec_acts('addnews_', $id);
	msg(array("text" => $lang['msgo_added'], "info" => sprintf($lang['msgi_added'], admin_url.'/admin.php?mod=editnews&action=editnews&id='.$id, admin_url.'/admin.php?mod=editnews')));


	// Now let's manage attached files
	$fmanager = new file_managment();

	$flagUpdateAttachCount = false;

	// Delete files (if needed)
	foreach ($_POST as $k => $v) {
		if (preg_match('#^delfile_(\d+)$#', $k, $match)) {
			$fmanager->file_delete(array('type' => 'file', 'id' => $match[1]));
			$flagUpdateAttachCount = true;
		}
	}


	//print "<pre>".var_export($_FILES, true)."</pre>";
	// PREPARE a list for upload
	if (is_array($_FILES['userfile']['name']))
		foreach($_FILES['userfile']['name'] as $i => $v) {
			if ($v == '')
				continue;

			$flagUpdateAttachCount = true;
			//
			$up = $fmanager->file_upload(array('dsn' => true, 'linked_ds' => 1, 'linked_id' => $id, 'type' => 'file', 'http_var' => 'userfile', 'http_varnum' => $i));
			//print "OUT: <pre>".var_export($up, true)."</pre>";
			if (!is_array($up)) {
				// Error uploading file
				// ... show error message ...
			}

		}

	// Update attach count if we need this
	if ($flagUpdateAttachCount) {
		$attachCount = $mysql->result("select count(*) as cnt from ".prefix."_files where (storage=1) and (linked_ds=1) and (linked_id=".db_squote($id).")");
		$mysql->query("update ".prefix."_news set attach_count = ".intval($attachCount)." where id = ".db_squote($id));
	}

	return 1;
}

    $JEV = 'null';
	if ($subaction == "add") {
	        // If we have an error - fill all variables again
		if (!news_add()) {
			$jarr = array();
			foreach ($_POST as $k => $v)
				if (is_array($v)) {
					foreach ($v as $vk => $vv)
						if (!is_array($vv))
							$jarr[$k][$vk] = iconv('Windows-1251', 'UTF-8', $vv);
				} else {
					$jarr[$k] = iconv('Windows-1251', 'UTF-8', $v);
				}
			$JEV = json_encode($jarr);
		}
	}

	$tvars['vars'] = array(
		'php_self'			=> $PHP_SELF,
		'changedate'		=> ChangeDate(),
		'mastercat'			=>	makeCategoryList(array('doempty' => 1, 'nameval' => 0)),
		'extcat'			=>  makeCategoryList(array('nameval' => 0, 'checkarea' => 1)),
		'JEV'			=> $JEV
	);

	$tvars['vars']['smilies']	= ($config['use_smilies'])?InsertSmilies('content', 20):'';
	$tvars['vars']['quicktags']	= ($config['use_bbcodes'])?QuickTags('', 'news'):'';

	if ($userROW['status'] < 3) {
		$tvars['vars']['[options]'] = "";
		$tvars['vars']['[/options]'] = "";
	} else {
		$tvars['regx']['#\[options\].*?\[/options\]#si'] = '';
	}

	if ($config['meta']) {
		$tvars['vars']['[meta]'] = "";
		$tvars['vars']['[/meta]'] = "";
	} else {
		$tvars['regx']['#\[meta\].*?\[/meta\]#si'] = '';
	}

	if ( is_array($userROW) && ($userROW['status']== "1" || $userROW['status']== "2") ) {
		$tvars['vars']['[if-have-perm]'] = "";
		$tvars['vars']['[/if-have-perm]'] = "";
	} else {
		$tvars['regx']["'\\[if-have-perm\\].*?\\[/if-have-perm\\]'si"] = "";
	}

	$flock = 0;
	switch ($userROW['status']) {
		case 2:		if ($config['htmlsecure_2']) $flock = 1;	break;
		case 3:		if ($config['htmlsecure_3']) $flock = 1;	break;
		case 4:		if ($config['htmlsecure_4']) $flock = 1;	break;
	}

	$tvars['vars']['disable_flag_raw'] = $flock?'disabled':'';
	$tvars['vars']['disable_flag_html'] = $flock?'disabled':'';

	// Configure flags
	$tvars['vars']['flag_mainpage']  = (($userROW['status'] == 1)||($userROW['status'] == 2))?'checked="checked"':'disabled="disabled"';
	$tvars['vars']['flag_approve']   = (($userROW['status'] == 1)||($userROW['status'] == 2))?'checked="checked"':'disabled="disabled"';
	$tvars['vars']['flag_favorite']  = (($userROW['status'] == 1)||($userROW['status'] == 2))?'':'disabled="disabled"';
	$tvars['vars']['flag_pinned']    = (($userROW['status'] == 1)||($userROW['status'] == 2))?'':'disabled="disabled"';
	$tvars['vars']['flag_allow_com'] = 'checked="checked"';

	// Disable flag for comments if plugin 'comments' is not installed
	$tvars['regx']['#\[comments\](.*?)\[\/comments\]#is'] = getPluginStatusInstalled('comments')?'$1':'';

	// Run interceptors
	if (is_array($PFILTERS['news']))
		foreach ($PFILTERS['news'] as $k => $v) { $v->addNewsForm($tvars); }

	$tpl -> template('addnews', $tpath['addnews']);
	$tpl -> vars('addnews', $tvars);
	
	$output = $tpl -> show('addnews');
	$template['vars']['mainblock':'plugin_addnews'] = $output;

Не в сети

#20 2010-04-29 15:39:17

Wolverine
Модератор
Откуда Домодедово
Зарегистрирован: 2008-10-13
Сообщений: 3,538
Рейтинг :   160 
Сайт

Re: добавление новостей

Полный архив plz

Не в сети

#21 2010-04-29 16:03:13

FlatFX
Участник
Откуда SPB
Зарегистрирован: 2010-04-27
Сообщений: 39
Рейтинг :   
Сайт

Re: добавление новостей

Лови, мне не жалко smile

Не в сети

#22 2010-04-29 18:53:49

Wolverine
Модератор
Откуда Домодедово
Зарегистрирован: 2008-10-13
Сообщений: 3,538
Рейтинг :   160 
Сайт

Re: добавление новостей

А чего его жалеть-то)) addnews.php в открытом доступе big_smile Так где архив? smile

Не в сети

#23 2010-04-29 19:06:12

FlatFX
Участник
Откуда SPB
Зарегистрирован: 2010-04-27
Сообщений: 39
Рейтинг :   
Сайт

Re: добавление новостей

Прикрепленные файлы:
addnews.zip, Размер: 4,650 байт, Скачано: 0

ну или http://ngcms.ru/forum/attachment.php?item=335

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

Не в сети

#24 2010-04-29 19:08:22

FlatFX
Участник
Откуда SPB
Зарегистрирован: 2010-04-27
Сообщений: 39
Рейтинг :   
Сайт

Re: добавление новостей

Wolverine пишет:

А чего его жалеть-то)) addnews.php в открытом доступе big_smile Так где архив? smile

тут addnews это название плагина smile
фактически ничего не изменено, только вывод на шаблон и вначале проверка на гостя.

Не в сети

#25 2010-04-29 19:17:18

Wolverine
Модератор
Откуда Домодедово
Зарегистрирован: 2008-10-13
Сообщений: 3,538
Рейтинг :   160 
Сайт

Re: добавление новостей

Залей на файлообменник любой, сейчас с аттачами некоторые проблемы на форуме

Не в сети

Подвал раздела

Работает на FluxBB