テーブルの編集

テーブルユニットにも採用されているテーブルの編集のユーザーインターフェースです(Ver.2.7.0 より)。
カスタマイズ次第でブログやカテゴリー、エントリーのカスタムフィールドとしても利用可能です。


テーブル見出しとテーブルの内容それぞれがグラフィカルに入力できるようになっている

テーブル編集UIのイメージ


使い方

js/config.js に設定されている「aTableMark, aTableDestMark, aTableFieldMark」に設定されているクラスを利用して以下のようなHTMLを記述します。 IFブロックのELSEの中には初期値のテーブルを好きに記述することができます。

<div class="js-editable-table-field" style="background-color:#ddd;padding:10px;">
  <div class="js-editable-table">
    <!-- BEGIN_IF [{table}[delnl]/nem] -->
    {table}[raw]
    <!-- ELSE -->
    <table>
      <tr>
        <th>サンプル</th>
        <th>サンプル</th>
      </tr>
      <tr>
        <td>サンプル</td>
        <td>サンプル</td>
      </tr>
    </table>
    <!-- END_IF -->
    <input type="hidden" class="js-editable-table-dest" value="{table}" name="table">
    <input type="hidden" name="field[]" value="table">
  </div>
</div>

デフォルトの設定

この機能の設定は、/js/config.jsの以下の箇所にあります。設定を変更する場合は、適用しているテーマ内にJavaScriptファイルを別途作成してください。詳しくは「組み込みJSについて:設定を編集する」を参照してください。

aTableMark: '[class^=js-editable-table]',
// エントリーの編集画面でユニットにこのクラスを指定することでテーブルユニットとして動作します。
aTableDestMark: '.js-editable-table-dest',
// テーブルで入力されたHTMLの結果をvalueとして格納することができます。
aTableFieldMark: '.js-editable-table-field',
/*
カスタムフィールドなどでテーブル編集用のUIを表示するには上の
aTableMarkで指定された要素をさらにこのセレクターで囲ってあげる必要があります
*/
aTableConf: {
  align: {
		default: 'acms-cell-text-left',
		// セルにデフォルトで付与されたクラス
		left: 'acms-cell-text-left',
		// 左寄せを設定した際に実際にセルに付与されるクラス
		center: 'acms-cell-text-center',
		// 中央寄せを設定した際に実際に付与されるクラス
		right: 'acms-cell-text-right'
		// 右寄せを指定した際に実際に付与されるクラス
  },
  btn: {
		group: 'acms-admin-btn-group acms-admin-btn-group-inline',
		//テーブル編集UIのボタングループに付与されるクラス
		item: 'acms-admin-btn',
		//テーブル編集UIのボタンに付与されるクラス
		itemActive: 'acms-admin-btn acms-admin-btn-active'
		//テーブル編集UIのボタンがアクティブの際に付与されるクラス
  },
  icon: {
		alignLeft: 'acms-admin-icon-text-left',
		//左寄せアイコンに付与されるクラス
		alignCenter: 'acms-admin-icon-text-center',
		//中央寄せアイコンに付与されるクラス
		alignRight: 'acms-admin-icon-text-right',
		//右寄せアイコンに付与されるクラス
		undo: 'acms-admin-icon-undo',
		//undoアイコンに付与されるクラス
		merge: 'acms-admin-icon-merge',
		//mergeアイコンに付与されるクラス
		split: 'acms-admin-icon-split',
		//分割アイコンに付与されるクラス
		source: 'acms-admin-icon acms-admin-icon-source',
		//ソースアイコンに付与されるクラス
	td: '',
	//tdアイコンに付与されるクラス
	th: ''
	//thアイコンに付与されるクラス
  }
},
aTableSelector: [
	/*
		右寄せ、左寄せ、中央寄せ以外に付与したいクラスがある場合にここに値を追加できます
		label: セレクターに表示される内容, value: 選択時にセルに付与されるクラス
	*/
  { label: ACMS.i18n('a_table.not_newline'), value: 'acms-cell-text-nowrap acms-admin-cell-text-nowrap' },
  { label: ACMS.i18n('a_table.bold'), value: 'acms-cell-text-bold acms-admin-cell-text-bold' },
  { label: ACMS.i18n('a_table.top_alignment'), value: 'acms-cell-text-top acms-admin-cell-text-top' },
  { label: ACMS.i18n('a_table.center_alignment'), value: 'acms-cell-text-middle acms-admin-cell-text-middle' },
  { label: ACMS.i18n('a_table.bottom_alignment'), value: 'acms-cell-text-bottom acms-admin-cell-text-bottom' }
]

Ver. 3.1.23 以上で発生する、ユニットが非表示になってしまう問題について


概要

Ver. 3.1.23 以上で、ユニットを1つでも非表示にすると、それ以下のユニットも非表示になってしまう問題が確認されました。 クリティカルな問題になりますので、該当バージョンをお使いの方はアップデートをお願いします。


エントリー編集画面のユニット

エントリー編集画面のユニット

該当バージョン

  • Ver. 3.1.25
  • Ver. 3.1.24
  • Ver. 3.1.23

ワークアラウンド(応急処置)

該当バージョンをお使いで、アップデートがすぐ難しいという方は以下の方法で応急処置できますのでご確認ください。

ablogcms/php/Services/Unit/Rendering/Front.php: 45行目付近

修正前

if (!$isDisplayInvisibleUnit && 'hidden' === $unit->getAlign()) {
    return; // 非表示ユニット
}

修正後

if (!$isDisplayInvisibleUnit && 'hidden' === $unit->getAlign()) {
    continue; // 非表示ユニット
}

「return」を「continue」に変更ください。

CMSバージョンアップによる対応

Ver. 3.1.26 が 9/26 にリリースされています。このバージョンにアップデートすることで、今回の問題に対応できます。

この度はご不便をおかけしてしまい大変申し訳ございませんでした。

本件に関するお問い合わせ先

本件についてご不明点などありましたら以下のお問い合わせよりご連絡ください。

有限会社アップルップル
メールアドレス:info@a-blogcms.jp
お問い合わせフォーム:https://www.a-blogcms.jp/contact/

アラートのメッセージを閉じる

a-blog cmsでは、管理画面で使用されているアラート(.acms-alert)を閉じる機能が実装されています。(Ver. 2.0.0より)

デモ

acms-alert
.acms-alert-info
.acms-alert-danger
<div class="acms-alert acms-alert-icon">
  <button 
    type="button"
    class="js-acms-alert-close acms-alert-icon-after"
    aria-label="アラートを閉じる"
  >
    ×
  </button>
  acms-alert
</div>
<div class="acms-alert acms-alert-info acms-alert-icon">
  <button 
    type="button"
    class="js-acms-alert-close acms-alert-icon-after"
    aria-label="アラートを閉じる"
  >
    ×
  </button>
  .acms-alert-info
</div>
<div class="acms-alert acms-alert-danger acms-alert-icon">
  <button 
    type="button"
    class="js-acms-alert-close acms-alert-icon-after"
    aria-label="アラートを閉じる"
  >
    ×
  </button>
  .acms-alert-danger
</div>

デフォルトの設定

この機能の設定は、/js/config.jsの以下の箇所にあります。設定を変更する場合は、適用しているテーマ内にJavaScriptファイルを別途作成してください。詳しくは「組み込みJSについて:設定を編集する」を参照してください。

  //------------------
  // acms alert close
  acmsAlertCloseMark: '.js-acms-alert-close',
  acmsAlertCloseConfig: {
    target: '.acms-admin-alert, .acms-alert'
  },
  acmsAlertCloseArray: [
    //    {
    //        'mark'    : '',
    //        'config'  : {}
    //    }
  ],

acmsAlertCloseMark 閉じるボタン
acmsAlertCloseConfig 押された時に非表示にする内容

設定のカスタマイズ

config.jsのデフォルトの設定からカスタマイズする場合、別途作成したJSファイルに下記のように記述します。

ACMS.Ready(function(){
  ACMS.Config.acmsAlertCloseMark = '.js-sample-alert-closed';
  ACMS.Config.acmsAlertCloseConfig = {
    target  : '.js-sample-alert'
  };
  ACMS.Config.acmsAlertCloseArray = [
  //    {
  //        'mark'    : '',
  //        'config'  : {}
  //    }
  ],
});

acmsAlertCloseArrayでは配列を渡せるようになっており、複数の設定を指定したいときに使います。
configにはacmsAlertCloseConfigの設定を指定できます。

class属性を.js-close-alertにし、targetの項目を追加する場合には以下のように記述します。

ACMS.Ready(function(){
  ACMS.Config.acmsAlertCloseArray.push({
    mark: '.js-close-alert',
    config: {
      target: 'js-alert'
    }
  });
});