NetCommons開発TIPS

NetCommons2 ページスタイル 指定できるテーマの違いについて

オープンソース・ワークショップのプログラマの牧野です。

 

NetCommons2のページスタイルのテーマについて、備忘録として記載しておきます。

 

NetCommons2では、全体、ページ、ブロック毎にページスタイルを設定できますが、

その時に指定できるテーマについて、差があります。

 

テーマ種類 全体 ページ ブロック
クラシック
サイドライン
アンダーライン
シンプル
タイトルアクセント × ×
パネル
パネル+ライン
点線
アート ×
テクスチャ ×
アクセシビリティ対応 ×

 

例えば、「タイトルアクセント」は、サイト全体もしくはページ全体に指定ができませんので、ブロックごとに指定する必要があります。

「アート」は、サイト全体もしくはページ全体で指定できますが、ブロックごとに指定する事ができません。

 

ページスタイルのテーマを指定する時は、上記の事をお気を付けください。

NetCommons2 新着情報のバグ

こんにちは。
株式会社オープンソース・ワークショップの永原です。

NetCommons2 新着情報のバグを見つけたので、とりあえずここにメモ。

発現する条件は以下

  • 新着情報を配置している。
  • 新着情報に日誌を表示している。(他のモジュールでも起こり得そう)
  • 日誌をブロック移動した。

この時、移動した日誌ブロックの記事をクリックすると、

"入力値が不正です。不正にアクセスされた可能性があります。"

とエラーになって、表示できないことがあります。

これは、NetCommons2 の新着情報モジュールのバグです。

  1. ログインしていること。
  2. ブロック移動前に新着から該当記事にリンクすること。
  3. この時点で、そのユーザが該当記事を見たという履歴ができる。
  4. 履歴データはroom_id を持っていない。
  5. ブロックを移動する。
  6. 再び新着をクリック。
  7. 履歴があるかどうかを判定する際、room_id も含めて確認するので、履歴なしと判定。
  8. 履歴をINSERTしようとするが、データベースのキーはroom_id がないので、重複エラーになる。

ということで、以下のように修正。

webapp/modules/whatsnew/components/Action.class.php

	function setRead() 
	{
    	$_user_id = $this->_session->getParameter("_user_id");
		if (empty($_user_id)) {
			return true;
		}
		$whatsnew = $this->_request->getParameter("whatsnew");
		if (empty($whatsnew)) {
			return false;
		}

		// 新着の既読確認に romm_id が含まれていたので、削除。by nagahara@opensource-workshop.jp
		// リンク先のブロックをルーム移動した際、エラーになる。
		// エラーは、ここで romm_id を含んで既読確認しているのに、既読データのINSERT は romm_id なしで行おうとするため。
		$params = array(
			"whatsnew_id"=>$whatsnew["whatsnew_id"], 
			"user_id" => $_user_id
		);
/*
		$params = array(
			"whatsnew_id"=>$whatsnew["whatsnew_id"], 
			"user_id" => $_user_id,
			'room_id' => $whatsnew['room_id']
		);
*/

 

Win7 + IE11の動画ダウンロードについて

こんにちは。
オープンソース・ワークショップの永原です。

Win7 + IE11の動画ダウンロードについて、はまった件があったのでメモです。

対象は当社のシンプル動画モジュール。
ログインする(HTTPS)とダメで、ログアウトしている(HTTP)と再生できるという現象でした。
以下、備忘録として。

原因はIE のSSL 時に Content-disposition: inline にした際、IE がファイル名を認識せず、動画再生で拡張子とファイル形式の不一致エラーがあったこと。
ログイン時にアウトなのは、ログインすると、SSL になるから。
Content-disposition: attachment なら、イケた。しかし、ダウンロードの選択画面が出る。

Content-disposition: inline で動かすためには、動画のデータはHTTP で流す必要がある。
そのため、以下をカスタマイズ。

simplemovie_view_main_init.html で動画のリンクは、http にする。
define.inc.php で、ログイン時の強制HTTPS を動画再生時には無効にする。
movie/View.class.php で、Content-disposition のinline指定
Simplemovie_View_Main_Iframe で動画のリンクは、http にする。

以上

NetCommons2のPHPMailerを最新版に差し替える

こんにちは、牟田口です。

最新版(2016/12/28時点) PHPMailer 5.2.19(70d041b6f5ed4e2ed8e2330b8c5b0f6926fc9781).zip に差し替えてメール飛びました。
すべての動作確認をしたわけではないので、参考程度の情報です。

PHPMailer最新版に差し替える

  • PHPMailerの最新版をGithubからzipをダウンロードする
  • ダウンロードしたzipを解凍して以下を変更する
  • class.phpmailer.phpに1行追加
    • require_once("PHPMailerAutoload.php");

確認動作

  • 掲示板に投稿してメールが飛びました
  • システム管理画面から、会員登録後にメールが飛びました

確認環境

  • NC2.4.2.1
  • XAMPP
  • PHP 5.6.12 (VC11 X86 32bit thread safe)
  • PHPMailer 5.2.19(70d041b6f5ed4e2ed8e2330b8c5b0f6926fc9781)

NC2.4.2.1の状態

参考

https://github.com/netcommons/NetCommons2/issues/134

以上です。

NetCommons2 使用しているテンプレート名をphpで取得する

こんにちは、牟田口です。

php側でテンプレート名を使ってプラグラムの動きを変えたかったので、
やり方を調査しました。

下記PHPで実現できます。

componentsの場合
$container =& DIContainerFactory::getContainer();
$block =& $container->getComponent("blocksView");
$block_id = intval($request->getParameter("block_id"));
$block_obj = $block->getBlockById($block_id);

// $block_obj['temp_name'];    //←テンプレート名が取得できる

 

(2018/09/28追記)

view・actionの場合

PHP

 var $block_id = null;
var $blocksView = null;

function execute()
{
$block_obj = $this->blocksView->getBlockById($this->block_id);
$block_obj['temp_name']; //←テンプレート名が取得できる
}

maple.ini

[Action]
blocksView = "ref:blocksView"

参考になれば幸いです。

ではでは。

NetCommons2 正常処理の際に、JavaScript Alaert メッセージでサーバ...

永原です。

備忘録。
NetCommons2 正常処理の際に、JavaScript Alaert メッセージでサーバからの文字列を表示する。

Backup_Action_Main_Init で処理している。

// 正常終了(エラーリストに完了メッセージ追加)

の部分。

--- 2016-05-25 追記

action クラスの maple.ini で
warning = "main:error.html"
のように、"main:error.html" を呼び出さないと、設定したメッセージがAlert されないみたい。

NetCommons2 のセッションに保持している権限

永原です。

NetCommons2 のセッションに保持している権限が、いつも覚えられないので、メモ

_auth_id : 参照中のルームへの権限 (_AUTH_xxxx)
_role_auth_id : 権限管理で作成する権限 (_ROLE_AUTH_xxxx)
_user_auth_id : ユーザのベース権限 (_AUTH_xxxx)

システム管理者の見分け方:_role_auth_id == _SYSTEM_ROLE_AUTH_ID
管理者以上の見分け方:_user_auth_id == _AUTH_ADMIN

以上

NetCommons2 のID、パスワードの長さの変更

こんにちは。
永原です。

いつも忘れるので、備忘録的に。
NetCommons2 のID、パスワードの長さの変更方法

--- webapp/config/user.ini

USER_LOGIN_ID_MINSIZE = 4
USER_PASSWORD_MINSIZE = 4


--- webapp/language/japanese/items.ini

USER_ITEM_MES_CHAR_DESCRIPTION="4文字以上の英数字または記号を入力"


ID とパスワードの長さは別に定義できるのに、説明は同じ定数なのよね。
まあ、会員管理 > 項目の「説明」で定数使わずに設定すれば良いのですけどね。

以上

NC3開発、cakephp2.xメモ。$this->request->isPost()は非推奨

こんにちは。牟田口です。
NetCommons3プラグイン開発しています。

cakephp2.xメモです。

$this->request->isPost(); // 非推奨 だった。
$this->request->is('post');  //こっちが正解

情報元


▼ リクエストを調べる - リクエストとレスポンスオブジェクト - CakePHP Cookbook 2.x ドキュメント
http://book.cakephp.org/2.0/ja/controllers/request-response.html#check-the-request

《$this->request->is('post');
$this->request->isPost(); // 非推奨》