baserCMSお仕事メモbaserCMSbaserCMSで😄を使いたい場合の最適解baserCMSで、絵文字を使いたい場合の最適解を考えるいきなり正解書いておくと、「DatabaseでPostgreSQLを使う」です。baserCMSは、SQLite,MySQL,PostgreSQLのDatabaseが選択できますが、(SQLiteは検証してないので今回パスで)MySQLで絵文字を管理画面等から登録しようとすると上手くいきません。原因は文字コードの設定です。MySQLで絵文字を取り扱うのであればutf8mb4という文字コードセットを利用する必要があります。utf8mb4は、4バイトを扱えるutf8、つまりは絵文字が扱えるutf8になります。utf8mb4ではありません。utf8mb4の文字コードセットは、MySQL5.5.3以上での利用となります。utf8mb4に設定してあげる必要があります。上記でも上手くいくかは、Database自体の設定のからみもあり、確実なものではありません。等からあわせて見直してあげる必要がでてきます。そこまでいくと、baserCMSの領域でどうのこうのするのは難しくなりMySQLで絵文字を使えるという状態を提供するのが困難になっています。それを乗り越えても、寿司ビール問題とかはらんでますしね。いう事で、baserCMSで、顔文字使いたければPostgreSQLをつかえという結論です。PostgreSQLならデフォルトのインストールで、顔文字を使える状態です。これは、PostgreSQLのUTF8が、デフォルトで4バイト対応だからになります。ちなみに、「どうしてMySQLのutf8は3バイトなんだ」という事に突っ込みを入れる気はないのであしからず。文字コードの問題等々は歴史的事情等も複雑にからんでおり、後方互換も考えるとその時々の判断にすごく苦労したのだと思います。MySQLもPostgreSQLも素晴らしいRDBであり、両方とも愛してくれたらうれしいです。utf8mb4に対応するかこちらの実装は当面しない予定です。絵文字使いたい人は、PostgreSQLを使ってくださいね。続きを読むbaserCMS2016/12/02adminMailプラグインで戻るボタンが効かない場合の対処法デザインを入れ替えたら、メール(フォーム)プラグインの戻るボタンが効かなくなった原因をさぐる。form-submit'のform-submitを削除したから。別のデザインにのせかえたので、classは必要なくなったため削除したのですがこのform-submitのクラスで判別してsubmitする前にmodeをJSで切り替えているため、こちらの指定がなくなると戻れなくなります。'BtnMessageBack'の指定も残しておかないと動きません。続きを読むbaserCMS2014/03/04adminpagination(ページ送り)をカスタマイズするブログプラグインとかの、ページネーションのデザインをカスタマイズする。デフォルトで存在する/lib/Baser/View/Elements/paginations/フォルダを/app/webroot/theme/default(利用しているテーマ名)/Elements/にコピーします。?>といった形で、呼び出しをblogにしてあげれば、こちらのthemeの方のpaginationファイルが優先的によばれます。default.php以外)でファイルを作成するのがいいと思う。;とかの形で出力されたものにたいして、文字列置換をかけるのが美しくないけど手っ取り早いと思います。Defaultになる。これを、「hoge」にしたい場合がある。id="hoge">となって欲しい場合などの時のカスタマイズ。?>">と書き換える、contentsNameメソッドの引数で、defaultの値を強制的に書き換えてる挙動です。'Default'の部分を上書きして上げている状態になります。これでだいたいの挙動は網羅できると思います。続きを読むbaserCMS2014/02/26adminパンくずリストのカスタマイズ<ul><li>とかのタグで構成されているパンくずリストを作成する場合ただし、検証が甘い。<ul><li>とかのタグで構成されているパンくずリストには対応できません。もってちょっとカスタマイズというか改造。ベースとしては、デフォルトのnada-iconsにのElementsフォルダにある、crumbs.phpを利用してください。;と変更getCrumbListは、baserCMSの機能でなく、HtmlHelperのメソッドとなります。http://book.cakephp.org/2.0/ja/core-libraries/helpers/html.html#HtmlHelper::getCrumbListこちらを使うと、ul,liとかのタグで囲んでくれます。dd(dt)は非対応、なのでちょっとカスタマイズ。getCrumbListのメソッドをまるっとコピーして、そちらを見るようにしてしまいます。追加してタグを自由に設定出来るようにしただけです。これで、dl,ddのタグで出力出来るようになります。dtのタグが再現できません。$crumb);とかで文字列変換をかけてあげれば、とりあえず思い通りにできたりします。getLinkメソッドからこちらを参照するように変更かけるのがただしいのだけど、検証があまいので今回はそのまま、いつか確認ができたら、本体にマージしたいところ。(エレメントのファイル)を少し書き直してあげる。array());}として、利用可能なリンク先かどうかのチェックを追加しておわり。?>">とすると、小文字で出力する事ができる。第2引数の「underscore」は通常アンダースコアつながりというオプションなのだが、こちらを指定することで、大文字にする事を回避する事ができます。id="Reference">と出力される。id="ReferenceArchives">と出力される。id="reference">と出力される。id="reference_archives">と出力される。id="Reference3">と、アンダースコアは削除され3は大文字がないのでそのままつながります。id="Reference3Archives65">と、なります。id="reference_3">と出力される。id="reference_3_archives_65">と出力される。URLの中にアンダースコアや数字が入っていると思った通りの挙動にならないかもしれないので注意が必要です。僕のid指定とかは小文字だけで指定してるぜ!!ってかたは、第2引数を「array('underscore'=>true)」にして対応してくださいませ。続きを読むbaserCMS2014/02/14adminプログラム一式をドキュメントルート以下におかない方法baserCMSをインストールするときに、プログラム等の一式をドキュメントルート以下に展開しないで運用する方法。カスタマイズ前提とかで、サイトを構築するとき、セキュリティ上の事とかもろもろかんがえて、baserCMSのプログラムフォルダ等をドキュメントルート以下に置きたく無い場合の運用方法。(これを書く一ヶ月以上前にしたので、記憶みすで、間違いがあったらごめんなさい)/var/www/htmlがドキュメントルートとして、/var/www/basercmsというフォルダにbaserCMSのパッケージを設置するとします。'index.php';>diffで書くと上記の様なかたち、やっていることは、ROOTの定数をbasercmsのパッケージがある絶対パスへ変更と、上記にあわせて、appフォルダの場所を再指定。設定するのどちらかが必要です。/var/www/basercms/app/webroot/filesが/var/www/html/filesで、/var/www/basercms/app/webroot/themeが/var/www/html/themeと同じものになっている必要があるってことですね。これはコピーするだけではだめで、プログラム的には、/var/www/basercms/app/webroot/themeのパスで見に行く事がほとんどなのですが、cssとかのファイルを閲覧者(ブラウザ)から見られる場合は/var/www/html/themeのドキュメントルートの方から見られるので、同じ物を参照してないと問題になってきます。themeとかですねまだ、構築中で本格運用はしてないですが、これで大丈夫なはず。あったので、http://www.adventar.org/calendars/54参加させていただきました。baserCMSのライセンスについてです。2バージョン存在します。version1の方は開発も(実質的に)終了している事もあり、今更触ることもないと思います。管理画面のインターフェイスライセンスの変更の2点です。(ちがってたら、@ryuringから指摘がはいると思います。)で、今回は、ライセンスのお話。ライセンスとなっております。これは、小さな事の様で大きな違いです。ライセンスの問題は複雑なので、間違いがあれば指摘してほしいのですが、GPLライセンスとMITライセンスの一番の違いと僕が思うところは、コピーレフトであるか無いかです。GPLライセンスは、コピーレフト。MITライセンスはそうでない。http://www.gnu.org/copyleft/copyleft.ja.htmlに判りやすい、コピーレフトの一文があったので引用いたします。コピーレフト(Copyleft)とは、プログラム(もしくはその他の著作物)を自由とし、加えてそのプログラムの改変ないし拡張されたバージョンもすべて自由であることを要求するための、一般的な手法の一つです。GPLライセンスで配布されている物をカスタマイズする時は、その成果物(カスタマイズされたもの)も自由でなくてはいけない。逆に書くと、ブラックボックス化してはいけない。これ、オープンソースである限りはいいのですが、商用利用しようとするといきなり困ったりします。GPLライセンスのCMSをカスタマイズして、別名で○○CMSと名付けて売り出すと、GPLライセンス違反になってしまいます。世の中には、GPLと商用ライセンスのデュアルライセンスとかで配布している物も存在致します。プラグインフォルダに関しては、GPLの対象外とするとかの付加条項をつけているものもあります。(その場合、プラグインフォルダには,LGPLとかMITライセンスのパッケージを入れられたりする)オープン(自由)であることを保証するには、いいライセンスではあるのですが、商用利用しようと考え出すとすこしだけグレーゾーンが発生しているのが昨今の現状ではないでしょうか?そういう事情も踏まえて、baserCMSは2系から、ライセンス形態をMITライセンスとしました。@ryuringの英断ですね。MITライセンスは、軽く書くと、その著作権表示の部分を削除しなければ好きにつかっていいよ。上記の例と同じ感じに説明すると、baserCMSをそのまま名前をかえて、pictnotesCSMとかで有料配布しだしても問題ないのですね。上記が可能なら、企業の資金力をバックに、cloneであるpictnotesCSMが爆発的な人気がでて、大元のbaserCMSが衰退しちゃう事もかんがえられなくはないです。その他、企業てきな営利で考えるのであれば、MITライセンスへ踏み切る事はかなり勇気がいる決断でした。それよりまずbaserCMSが皆様に使われる用になることが重要だという決断でライセンスの変更はきまりました。格好いいこと書いてますが、baesrCMSで少なからず食べさて頂いてる僕としては、そうなると困ると言えば困るのですが、そこは、コミュニティーの活動をより活発にすれば自ずと防げる事であり、baserCSMが名実共に、コミュニティー主体の物になるという意思表示でもあります。言うことで、小難しい事を書いてきましたが、つまりはbaserCMSだと何も考えないで使えるよ!!って事です。MITライセンスあたりで、構築してパッケージにすれば、なにも問題無く商用販売できちゃうというステキなパッケージがつくれます。しくてあまりさわれなかったのですが、またちらほら作業を開始して、どちらかといえば、僕は表示側のバグをフィックスしていってます。年内公開は現段階で不可能と言うことになりますが間違えなく進んでいってますので、期待して待っておいてくださいませ。いうことで、福岡で飲んでいる僕をみつけたら、飲まずに開発しろ!!ってはっぱかけて下さいませ。以上、baserCMSをよろしくお願い致します。続きを読むbaserCMS2012/12/23adminbaserCMSで、googleMapを全てのページで表示したい。facebookの雑談ページのスレから。全ページのフッターに、システム設定で入力した住所のGoogleMapを表示させたいのですが、コアのソースをコピーしただけだと、固定ページにしか表示できず、ブログとメールフォームではエラーが出てしまいます。コピーしたファイルのクラス内に次のコードを追加します。);}管理システムよりサーバーキャッシュを削除します。入力画面に戻るボタンがないので、実装してみました。2.0.3で確認しています。?>と、戻るボタンの追加とsubmitボタンに名前をつけます。句の中に入れ込みます。最後に、同じmail_controller.phpにメソッドをまるっと追加。}とすれば、完成です。?>とすれば大丈夫です。本体の方には、マージしてもらえるように(関連する細かいバグを含めて)リクエストしておりますが現状のバージョンにくみこみたい場合はお試しください。初期化を組み込むべきだろうなぁ。チケットは上げたのでそのうち修正されると思います。