NetCommons開発TIPS

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(); // 非推奨》

NC3開発、cakephp2.x FormHelperメモ

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

cakephp2.xメモです。

  • cakephpの`FormHelper`で`$options['type'] =‘put`は編集フォーム。
  • $this->request->dataに、モデルのプライマリキー の値が空でなければ、編集フォームになる。
  • 編集フォームの`<input type="hidden" name="_method" value="PUT" />`は、cookbookでは《HTTPメソッド》と表現していた。
  • RFC 7231のHTTPメソッドでも、《置換するもの》として定義されていた。


なるほど、納得した。

情報元


▼ フォームの作成 - FormHelper - CakePHP Cookbook 2.x ドキュメント
http://book.cakephp.org/2.0/ja/core-libraries/helpers/form.html#id1

《 <form id="RecipeEditForm" method="post" action="/recipes/edit/5">
   <input type="hidden" name="_method" value="PUT" />
   注釈
   これは編集フォームなので hidden の入力項目が生成され、 デフォルトの HTTP メソッドは上書きされます。》



▼ create() のオプション - FormHelper - CakePHP Cookbook 2.x ドキュメント
http://book.cakephp.org/2.0/ja/core-libraries/helpers/form.html#create

《$options['type'] このキーは生成するフォームのタイプを指定します。 有効な値は ‘post’, ‘get’, ‘file’, ‘put’, ‘delete’ です。》



▼ 4.3.4. PUT - RFC 7231 - HTTP/1.1: Semantics and Content (日本語訳)
http://www.hcn.zaq.ne.jp/___/WEB/RFC7231-ja.html#section-4.3.4

《PUT 要請は:
    [ 同封された表現が、ターゲットリソースの状態を置換する ]ものとして定義される。 》

NetCommons3の$this->NetCommonsForm->hidden

こんにちは。牟田口です。
自分用でせっかく調べたので、開発メモを残します。
2016/1/4時点NetCommons3情報です。

  1. NetCommonsFormHelper.phpにはhiddenメソッドがないけど、実際のソース上では使っている。
  2. NetCommonsFormHelper.php内で、さらにhelperを指定していて、「Form」helperを呼んでいた。
  3. そこと、__callで「FormHelperラップ用マジックメソッド」してた。
  4. それで、FormHelper.phpのhiddenメソッドが使われていた。

 

--- 詳細

 

NetCommonsFormHelper.php

 

 

実際のソース上では使っている箇所


https://github.com/NetCommons3/Videos/blob/master/View/Elements/VideoBlockRolePermissions/edit_form.ctp#L14-L16

<?php echo $this->NetCommonsForm->hidden('Block.id'); ?>
<?php echo $this->NetCommonsForm->hidden('VideoBlockSetting.id'); ?>
<?php echo $this->NetCommonsForm->hidden('VideoBlockSetting.block_key'); ?>

FormHelper.phpのhiddenメソッド


https://github.com/cakephp/cakephp/blob/506051f688431f6234edfb818c191f1d7a9df384/lib/Cake/View/Helper/FormHelper.php#L1690-L1713

--- おまけ


http://book.cakephp.org/2.0/ja/core-libraries/helpers/form.html#FormHelper::hidden

フォームが編集されると(すなわち、配列 $this->request->data に User モデルに渡されるべき情報が含まれている場合)、生成される HTML の中に id フィールドに対応する値が自動的に追加されます。

上記が便利。

以上です。

NetCommons2のファイルアップロード時にでてくるダイアログについて

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

ファイルアップロード時に、アップロード処理の時間が長いと
「アップロードが失敗したか、タイムアウトになった可能性があります。処理を続行しますか?」

とダイアログが出る事がありますが、
カスタマイズ時に非表示にできないか調べました。

https://github.com/netcommons/NetCommons2/blob/537e08b7a2892bacd2eed5dbac3ea45792de0f36/html/webapp/modules/common/files/js/common.js#L2451

/*timeout_flag:0の場合、タイムアウトチェックをしない     */
/*********************************************************/
sendAttachment: function(params_obj) {


上記パラメータをセットすれば、できる。

サンプルJS

 

    /**
     * ファイルアップロード
     */
    uploadFile: function() {

        var messageBody = new Object();
        messageBody["action"] = "custummodule_action_main_import";

        var option = new Object();
        option["param"] = messageBody;
        option["top_el"] = $(this.id);
        option["timeout_flag"] = 0;            // タイムアウトチェックをしない
        option["callbackfunc"] = function(response) {
            commonCls.alert("インポートしました。");
            commonCls.sendRefresh(this.id);
        }.bind(this);
        option["callbackfunc_error"] = function(file_list, res){
            commonCls.alert(res);
        }.bind(this);
        commonCls.sendAttachment(option);
    },


ではでは。