Web 2.0のスタイルでコンテンツ依存アプリケーションを作成するためのコンストラクター

SAPID CMF
それは最近開かれたオープンソースプロジェクトSAPID CMFについてです。 SAPIDという名前は、それ自体では漠然と馴染みのある人もいるかもしれません。 はい、昔々、インラインサイトの管理を可能にするシンプルなCMS SAPIDがありました。1MBのディスクスペースしか必要とせず、DBMSなしで管理できました。 ただし、このシステムがXML Sapiensパラダイムの機能を実証するために作成されたことを覚えている人はほとんどいません。 CMS SAPIDは1周年を成功andに祝い、その後2年間、悲しいことに、重要な新しいリリースは見られませんでした。 しかし、昨年のSAPIDコミュニティサイトでは、SAPID CMFプロジェクトの新しいブランチでの作業に関する情報がときどき欠落していました。 出来上がり! ここにある-ブランチ、ダウンロード可能 http://sapidcmf.sourceforge.net )および「キャップ」デート( http://cmfdemo.xmlsapiens.org )。

SAPID CMFはツーインワンセットのようなもので、SAPIDは基本的な管理インターフェースを備えたコンテンツ管理システムであり、CMFはこのインターフェースを独自のカスタマイズされたシステムに変えるためのコンストラクターです。

CMSは、一方ではWebアプリケーションのエンジンであり、他方ではこれらのアプリケーションを管理するためのインターフェースです。 配信エリアのアプリケーション(サイトのユーザーが利用できるアプリケーション)とCMS管理パネルのアプリケーションは1つのエンジンに基づいて動作し、同じロジックに従い、同じテンプレートの原則を使用すると仮定するのは論理的です。 したがって、外部Webアプリケーションの作成を許可するCMSは、同じように簡単に内部管理インターフェイスを作成する必要があります。 SAPIDの中核はXML Sapiensプロセッサです。 XML Sapiensは、データ構造、設計、機能のパターンを記述するための宣言型言語です。 この言語を使用すると、3つのレベル(データ、デザイン、機能)すべてのコンポーネントを作成し、デザイナーキューブのように繰り返し使用(再利用)して、さまざまなソリューションを取得できます。 XML Sapiensプロセッサは、これらのコンポーネントをアプリケーション用の既製のユーザーインターフェイスにコンパイルします。

Webアプリケーションの場合、デスクトッププログラムとは異なり、GTKコントロールの定義済みセットはありません。 これは長所でもあり短所でもあります。 新しいアプリケーションまたはアプリケーションのグループを作成するとき、開発者は新しいGTKを作成する必要があります。 開発者の作業を楽にするために、SAPID CMF管理パネルのGTKはWindowsの方法で作成されています。 各アプリケーションには、ワークスペース、メニュー、モーダルウィンドウ、メッセージボックス、ダイアログ、プロセスがあります。 使用可能なコンポーネントは、ツリービューとリストビューです。 したがって、同じスタイルの管理パネルアプリケーションをすばやく作成するための一種の「紳士用セット」があります。

SAPID CMFのツリービューコンポーネント

SAPID CMFのリストビューコンポーネント

開発の準備



あなたは言うでしょう:「素晴らしい! 管理パネルに独自のアプリケーションを追加します。 1か月以内に、フレームワークの新しいリリースが表示されます。 アップグレードしてすべての作業を失います。」 実際、SAPID CMFは、基本コンポーネントのみがアップグレード中に置き換えられるように編成されており、開発者が追加した追加コンポーネントはそのまま残ります。 「基本コンポーネントを変更し、アップグレード中に変更コードが上書きされないように保護する方法は?」という疑問が生じます。 SAPID CMFは、 アスペクト指向プログラミングのスタイルでイベントモデルを使用します 。 システムはさまざまなイベントを定義します。 環境を適切に変更する独自のさまざまなイベントハンドラを追加できます。 変更コードはpluginsフォルダーに配置されますが、フレームワークの更新時にはスキップされます。 基本コンポーネント(APIライブラリ、コントローラーなど)を変更するためのAOPの観点から、変更のいくつかの側面を定義します。

$ ModalWindowCustomization = new Aspect();

リスニングエリアを設定します。たとえば、すべてのクラスとすべてのメソッド

$ pc = $ ModalWindowCustomization-> pointcut( "call * :: *");

変更コードを特定のイベントに割り当てます

$ pc-> _ event( "ModalWindowSchemasDefined"、 "customizateModalWindow(\ $ obj);");

すでに述べたように、SAPID CMFの最優先目標は、Webアプリケーションを作成する際に、データ構造の空白、レイアウト、機能を効率的に再利用することです。 フレームワークには、VIEWSルートフォルダーが含まれています。 デフォルトの管理パネルスキンテーマ用のDEFAULTフォルダーと、フレームワークに基づいて作成されたアプリケーションテンプレート用のDELIVERYフォルダーが含まれています。 さらにテーマを追加すると、対応するフォルダーがここに表示されます。 それらのいずれにも、機能テンプレート(DDCフォルダー)、フィールドセット(FIELDSETsフォルダー)、コンテンツ要求テンプレート(QCsフォルダー)、およびデザインテンプレート(TEMPLATESフォルダー)が含まれています。

書いたら、繰り返し使用する



論理ページのレイアウトスケッチでWebアプリケーションを作成すると、動的領域が定義されます。 たとえば、メニューブロック、リストブロックなどを切り取ります。 設計コードを対応するDDCに転送します。 DDCは、設計コードに加えて、動的ブロックロジックも定義します。 ここでは、条件、要求されたCMSアプリケーションからのデータ列挙、包含、XML Sapiens式、およびこれらの構造の無制限のネストを使用できます。 このロジックを記述するためにXMLが使用されます。 XML Sapiensでは、同じDDCを使用して異なる動的ブロックを形成できます。 DDCが呼び出されると、DDC環境で考慮できるパラメーターを渡すことができます。

<sapi:apply name = "ddc。#submenu.value">
<sapi:param name = "root">構造</ sapi:param>
</ sapi:適用>

ダイナミックブロックのコードまたは論理ページのテンプレートのコードでデータ入力フォームが想定されている場合、QCを使用します。 QCは、通信されたデータがどのように表示または要求されるかを決定します。 <sapi:apply name =“ qc.contentblock.value” type =“ article” title =“ Enter content” />のような呼び出しを使用すると、論理ページの管理状態で、WYSIWYGエディター(記事タイプに対応)でリクエストが表示されますまた、「コンテンツを入力」という見出しが付いています。 ページのコンテンツ配信(表示)の状態では、このリクエスト中に管理時に入力されたcontentblockコンテナのコンテンツが表示されます。

SAPID CMFのコンテンツクエリ(QC)

データ要求フォームのフィールドのセットが動的に変化する場合(環境の状態に応じて)、フィールドのセットへの呼び出しを使用できます。 例えば

<sapi:include href = "fieldset1.xml" parse = "fieldset" state = "admin" />

この構成は、fieldset1.xmlファイルの管理状態に対応するコンテンツ要求フィールドのセットを返します。

実際の理論は何ですか?



SAPID CMFのサンプルサイト

この場所に目を通すことはかなり可能です、「これらの山はすべて恐ろしく見える。 おもしろい、少なくとも何かがこのフレームワークで本当にお金を稼ぐことができますか?」 配布パッケージでは、既製のデモサイトがフレームワークとともに提供されます。 典型的なものに加えて、サイトにはAJAXを使用した認証/登録フォームの例が含まれています。 フォームにはOpenID認証も含まれます。 このサイトでは、混合タイプ(GIF / Flash / DHTML / RichMedia)のバナー用の広告スロットの例を提供しています。 IntelliTXTテクノロジーの使用例もあります。 システムのシソーラスに入力された用語は、サイトのページのテキストでツールチップリンク(二重下線付きリンク)に自動的に変換されます。 リンクにカーソルを合わせると、ヒントのあるウィンドウがポップアップします。 システムはリンクウィンドウに関連するインプレッションの統計を保持するため、このメカニズムはコンテキスト広告に使用できます。
デモサイトには、写真にコメントする機能を備えたマルチレベルギャラリーの例が含まれています。 投票は、写真とコメントの両方で受け入れられます。 サイト上のカタログの例は、タグ(類似の製品、タグクラウド)で製品をグループ化する可能性を示しています。 一般に、作業するものがあり、さらに、プロジェクトで安全に使用できるいくつかの基本的なソリューションがあります。

Source: https://habr.com/ru/post/J18693/


All Articles