Nucleus(JP)フォーラム

NucleusCMS日本語版ユーザーのためのサポートフォーラムです。疑問が生じたらまずは記事検索をご利用ください。

ログインしていません。

#1 2007-06-14 15:12:31

zeppld
メンバー
登録日: 2007-04-26
投稿: 25

Re: アイテムの追加について

管理者以外のユーザーがアイテムを追加した場合自動的にドラフト保存させる事は出来るのでしょうか?
色々調べたのですが以前のトピックに「記事の投稿を認証制にしたい」というものが掲載されていました。
ここに書かれている動き「一般ユーザーは投稿はできるけど、常にドラフト状態で、 管理者に承認されて初めて公開、というもの」まさにこれが理想です。
この件はその後解決されていないようでので再度投稿させて頂きました。
現在何か解決出来る方法がありましたら教えて頂きたいと思います。よろしくお願いします。

オフライン

#2 2007-06-16 11:08:12

yama
Administrator
登録日: 2005-07-07
投稿: 1,272
ウェブサイト

Re: アイテムの追加について

現在、某作者さんが開発中です。 8)
近日中に本人さんからアナウンスあると思うので、しばらくはフォーラムチェックをよろしくです。

オフライン

#3 2007-07-17 10:32:58

m2groove303
メンバー
登録日: 2007-04-19
投稿: 11

Re: アイテムの追加について

私もあると便利だと思うので、期待しています! big_smile

オフライン

#4 2007-10-09 18:10:45

tkat
メンバー
From: Kyoto, JAPAN
登録日: 2007-04-12
投稿: 24

Re: アイテムの追加について

このトピックスは、その後解決したのでしょうか?
私もちょうど、記事の認証ができる方法を探していて、うまく行かなかったため、大変気になりました。

オフライン

#5 2007-10-09 18:27:15

yama
Administrator
登録日: 2005-07-07
投稿: 1,272
ウェブサイト

Re: アイテムの追加について

制作中のものがありましたが、事情があって保留中です。期待させてすみません。。

オフライン

#6 2007-10-09 20:18:32

Andy
メンバー
登録日: 2004-03-18
投稿: 1,495
ウェブサイト

Re: アイテムの追加について

付け焼刃ですが,こんなのでどうでしょ?

<?php
class NP_PostToDraft extends NucleusPlugin {

	function getName() { return 'Post to Draft'; }
	function getAuthor()  { return 'Andy'; }
	function getURL() { return 'http://www.matsubarafamily.com/lab/'; }
	function getVersion() { return '0.1'; }
	
	function getDescription() { 
		return "管理者以外の投稿をドラフトにする";
	}

	function supportsFeature($what) {
		switch($what){
			case 'SqlTablePrefix':
				return 1;
			default:
				return 0;
		}
	}
	
	function install() {
		$this->createBlogOption('todraft', '管理者以外の投稿をドラフトにする','yesno','no');
	}


	function getEventList() {
		return array('PreAddItem', 'PostUpdateItem');
	}	

	function event_PreAddItem($data) {
		if ($this->getBlogOption( $data['blog']->getID(), 'todraft') == 'yes') {
			$mem = MEMBER::createFromID($data['authorid']);
			
			if (! $mem->blogAdminRights($data['blog']->getID())) {
				$data['draft'] = 1;
			}
		}
	}

	function event_PostUpdateItem($data) {
		$item = ITEM::getItem($data['itemid'], 1, 1);
		
		if ($this->getBlogOption($item['blogid'], 'todraft') == 'yes') {
			$mem = MEMBER::createFromID($item['authorid']);
			
			if (! $mem->blogAdminRights($item['blogid'])) {
				$query =  'UPDATE '.sql_table('item')
					   . ' SET idraft=1 WHERE inumber='.$item['itemid'];
				sql_query($query);
			}
		}
	}



}
?>

オフライン

#7 2007-10-10 14:53:39

tkat
メンバー
From: Kyoto, JAPAN
登録日: 2007-04-12
投稿: 24

Re: アイテムの追加について

皆さん、レスポンスありがとうございます。

> yama.kymsさん

すみません。こちらこそ、プレッシャーをかけたみたいになってしまって申し訳ないです。

> Andyさん

ありがとうございます。試してみたところ、うまくいきました。
znCustomAdminと組み合わせて、自然な入力画面にしてみます。
助かりました。

オフライン

#8 2007-10-11 15:05:02

tkat
メンバー
From: Kyoto, JAPAN
登録日: 2007-04-12
投稿: 24

Re: アイテムの追加について

>Andyさん

何度もすみません、
よく確認したところ、管理者以外がドラフト、というのはうまくいったのですが、
ドラフトの記事を管理者が認証・投稿しようとすると、ドラフトのまま、という症状がでてしまいました。

念のためにPost to Draftをオフにして、通常通り、ドラフトを選択すると異常なく投稿されます。
NP_znCustomAdminで編集画面をいじっていたので、いったんdefaultに戻してみたのですが、変化はありませんでした。

通常のドラフトだと、1970年1月1日になるのですが、Post to Draftだと、書き込んだ日時のタイムスタンプになっているので、そのあたりかな、とも思ったりするのですが、なにかおわかりになりますでしょうか?

当方の環境は
Apache
MySQL 5.1
PHP 5.2


Nucleus 3.2
NP_Show Blogs
NP_znItemFieldEX
NP_Extensible Search
NP_googlemapsが動いています。

よろしくお願いいたします。

オフライン

#9 2007-10-11 16:33:39

Andy
メンバー
登録日: 2004-03-18
投稿: 1,495
ウェブサイト

Re: アイテムの追加について

後半を以下のように修正してみてください。日付のところは,この修正ではいじっていませんが,
ドラフトの問題は解決すると思います。

   function event_PostUpdateItem($data) {
      global $member;
      $item = ITEM::getItem($data['itemid'], 1, 1);
      
      if ($this->getBlogOption($item['blogid'], 'todraft') == 'yes') {
         if (! $member->blogAdminRights($item['blogid'])) {
            $query =  'UPDATE '.sql_table('item')
                  . ' SET idraft=1 WHERE inumber='.$item['itemid'];
            sql_query($query);
         }
      }
   }

オフライン

#10 2007-10-11 22:00:44

tkat
メンバー
From: Kyoto, JAPAN
登録日: 2007-04-12
投稿: 24

Re: アイテムの追加について

> Andyさん

ありがとうございます。
早速差し替えたところ、正常に動くようになりました。

タイムスタンプは関係なかったようですね。。。見当違いですみません。

ありがとうございました。

オフライン

#11 2007-10-12 13:47:15

Andy
メンバー
登録日: 2004-03-18
投稿: 1,495
ウェブサイト

Re: アイテムの追加について

オフライン

#12 2008-11-06 02:27:51

sugeo
メンバー
登録日: 2008-08-03
投稿: 1

Re: アイテムの追加について

posttodraftありがたく利用させていただいてます。
ですが、これによってメンバーの方が投稿したドラフト記事は、管理者の管理ホーム画面に反映されないのでしょうか?
認証制になったものの、複数のブログで1つのサイトを構築しているため
いつどこに誰がどの記事を投稿したのかイマイチ把握できず、四苦八苦しています。

一通り調べてみても同じような要望がなかったことから、もしかしたら何か管理者が分かりやすく把握する方法があるのでしょうか?

オフライン

#13 2009-12-07 16:14:01

sephirah
メンバー
登録日: 2009-12-07
投稿: 1

Re: アイテムの追加について

横から失礼いたします。
同じくNP_PostToDraftを利用させていただいております。
Andyさん、ありがとうございます。

今回私も上記プラグインを利用するに当たり、以下の問題が起こり
一応の解決をしましたので、こちらにご報告いたします。

■問題点
1.一般メンバーが投稿したドラフト記事を、管理者が許可(公開)しようとしてもできない
2.管理者のホーム画面に管理者のドラフト一覧しか出ず、メンバーのドラフト一覧が確認できない (sugeoさんのご質問と同様)

■解決方法
1.プラグインのevent_PostUpdateItem()内、SET idraft=1 を SET idraft=0 に書き換える

   function event_PostUpdateItem($data) {
      global $member;
      $item = ITEM::getItem($data['itemid'], 1, 1);
     
      if ($this->getBlogOption($item['blogid'], 'todraft') == 'yes') {
         if (! $member->blogAdminRights($item['blogid'])) {
            $query =  'UPDATE '.sql_table('item')
                  . ' SET idraft=0 WHERE inumber='.$item['itemid'];
            sql_query($query);
         }
      }
   }

DBのnucleus_itemテーブル内、idraftの値が1であるものがドラフト記事と判別されるようです。
プラグインを作成された頃とはNucleusの仕様が変わったのかもしれません。


2./nucleus/libs/ADMIN.phpを編集し、管理者と一般メンバーでドラフト一覧表示を分岐させる

		if ($amount != 0) {
			echo '<h2>' . _OVERVIEW_YRDRAFTS . '</h2>';
			// ドラフト記事の一覧表示を管理者と一般メンバーで区別
			if ($member->getID() == $member->isAdmin()) {
				$query =  'SELECT ititle, inumber, bshortname'
					   . ' FROM ' . sql_table('item'). ', ' . sql_table('blog')
					   . ' WHERE iblog=bnumber and idraft=1';
			} else {
				$query =  'SELECT ititle, inumber, bshortname'
					   . ' FROM ' . sql_table('item'). ', ' . sql_table('blog')
					   . ' WHERE iauthor='.$member->getID().' and iblog=bnumber and idraft=1';
			}
			$template['content'] = 'draftlist';
			$amountdrafts = showlist($query, 'table', $template);
			if ($amountdrafts == 0)
				echo _OVERVIEW_NODRAFTS;
		}

/nucleus/libs/ADMIN.phpで _OVERVIEW_YRDRAFTS のある辺りがドラフト記事を一覧表示する部分です。
(Nucleus v3.41では228行目付近)

初期状態では、管理者も含めて自分のドラフト記事しか閲覧できませんが
管理者か、それ以外のメンバーかを判別し、管理者の場合のみ全ドラフト記事を取得、表示するように改良しています。

以上です。

オフライン

Board footer