Next Codeの当日の「無料アカウントのサービス」

アイデアから始めましょう



たとえば、何かを探しているサイトに行きました。 コンテンツへのアクセスは制限されています。 別のサイトで同じコンテンツを登録または検索するという2つのオプションがあります。 このサイトはもはや役に立たない可能性が高く、スパムでメールを乱雑にしたり、追加のアクション(登録、確認)をしたい人はほとんどいません。 この場合、サービスにサイトアドレスを入力し、このサイトに無料アカウントがあるかどうかを確認します。 無料アカウントとは、他のユーザーが必要と見なさず、時間を短縮するために他のユーザーと共有することにした任意のログイン名とパスワードです。

このサイトのアイデアは、労働の日に生まれました。 開発には1営業日かかりました。 動機は、他のインターネットユーザーを無料で支援する準備ができている人々がいることを証明したいという願望であり、そのようなプロジェクトは生き続けることができます。

サービスは、オールインワンNext Codeフレームワークを使用して作成されました。 誰がどのように気にします-猫へようこそ。



次のコード



フレームワークは以下で構成されます:

•NextJS-Ajaxリクエスト処理、デバッガー、基本機能を含むJSカーネル

•NextUIJS-視覚的なコンポーネントと拡張機能

•NextCSS-クイックレイアウトのためのCSSスタイルのセット

•Xcode-データベースの操作、テンプレート、デバッガー、アプリケーションインストーラー、パーサーなどの操作を含むPHPコア。

フレームワーク自体は、独自のニーズに合わせて開発されています。 多くのことが行われましたが、すべてのアイデアが実装されているわけではありません。 製品版はオープンソースになります。 興味深い場合は、内部とすべての機能について個別の記事を作成しますが、その多くがあります。



開発プロセス



Xcodeを構成する


開始するには、必要なコンポーネントを選択して、サイトを表示および操作します。

必要なのは:

1.データベースマネージャー

2. MySQLドライバー

3.テンプレートマネージャー

4. Smartyドライバー

5.アプリケーションインストーラー

6.ユーザーリクエストプロセッサ

7.数字を操作するためのプラグイン

構成は、必要な各コンポーネントのiniファイルを構成することにより行われます。 操作中にコンポーネントを使用するには、ini設定ファイルを構成フォルダーに配置する必要があります。

たとえば、numberプラグインのiniファイル(plugins / numeric.ini)は次のようになります。

[plugin]

name = numeric

class = plugin.numeric.default








アプリケーション作成


サービス全体は、単一のアプリケーション-freeaccです。

アプリケーションが含まれます:

1. class xcFreeAcc_Application(システム全体の名前はapplication.freeaccです)

2.設定ファイル

3.アカウントを保存するためのエンティティfreeacc_account

4. freeacc_siteの本質-サイトの保存用

5. freeacc_verifyの本質-アカウントのアクセス評価を保存する

6.予約済みリクエストのリスト

7.ページテンプレート

アプリケーションは、application / freeacc /のリポジトリに保存されます

システムがアプリケーションを判別するには、インストールする必要があります。



 xc("call.application.freeacc::__install");
      
      







__install関数は、次のアクションを実行します。



 public static function __install() { $app_id = xc::query( "api.application.install", xc::query( "setting", "name", "application", __class__ ), xc::query( "setting", "caption", "application", __class__ ) ); xc::query( "api.application.registerComponents", xc::query( "setting", "name", "application", __class__ ), $app_id ); }
      
      







最初の行では、アプリケーションのインストーラAPIが呼び出され、アプリケーションの名前とタイトルが渡されます(値は構成ファイルから取得されます)。

2行目はエンティティを作成し、アプリケーションのリクエストを予約します。

アプリケーションの準備が整いました!



テンプレートを作成する


MVCの原則に基づいて、アプリケーションにはレイアウト付きのtplファイルとコントローラーとしてのphpファイルが必要です。 アプリケーションクラスはモデルとして機能します。

Tplファイルコード

 <div class="xc-fullpage-layout"> <div class="xc-layout-header"> <div class="xc-layout-frame"> <div class="xc-grid"> <div class="block logo xc-column"><a href="/"><img src="{$MEDIAPATH}/logo.png" /></a></div> <div class="block motto xc-column"><span class="delimiter">|</span> <span class="motto">  </span></div> </div> <div class="block description"> <span>     ,  ,    </span> </div> </div> </div> <div class="xc-layout-content xc-center"> <div class="xc-layout-frame"> {if $self} {$self} {else} {$likes} {/if} <form title=" " id="addForm" action="freeacc/forms/add_form" class="ui-component-form" data-valid-timeout="3000" data-valid-message=", ..." data-valid-area=">footer.ui-element-validation"> <fieldset class="fields"> <div class="header"> <h2>  :</h2> </div> <ul class="xc-grid"> <li class="item ui-component xc-column"> <div class="xc-grid"> <div class="field xc-column"><input name="url" title="" placeholder="  ..." class="ui-component-edit" pattern="site" type="text" required /></div> <div class="field xc-column"><input name="login" title="" placeholder=" ..." class="ui-component-edit" type="text" required /></div> <div class="field xc-column"><input name="password" title="" placeholder=" ..." class="ui-component-edit" type="text" required /></div> </div> </li> <li class="item control xc-column"> <button class="ui-component-button" type="submit"></button> </li> </ul> </fieldset> <footer class="ui-element-validation"> </footer> </form> <form title=" " id="requestForm" data-callback-function="postRequest" data-action="none" class="ui-component-form" data-valid-timeout="3000" data-valid-message=", ..." data-valid-area=">footer.ui-element-validation"> <fieldset class="fields"> <div class="header"> <h2>  : *</h2> </div> <ul class="xc-grid"> <li class="item ui-component xc-column"> <div class="field"><input name="url" title="" placeholder="  ..." class="ui-component-edit" pattern="site" type="text" required /></div> </li> <li class="item control xc-column"> <button class="ui-component-button" type="submit"></button> </li> </ul> </fieldset> <div class="description"> *   .    .         ! </div> <footer class="ui-element-validation"> </footer> </form> {if !$self} <div class="block table xc-full"> <div class="site"> <span>  <b>{$accounts->asFormat(0,"."," ")}</b> {$accounts->getDeclension(array("","",""))}  <b>{$sites->asFormat(0,"."," ")}</b> {$sites->getDeclension(array("","",""))}</span> </div> <div class="table"> <div class="xc-grid xc-full" data-account="{$item.id}"> <div class="header"> </div> {foreach from=$favorites item=item} <div class="xc-item"><a href="/{$item.url}/">{$item.url}</a> ({$item.cnt})</div> {/foreach} </div> </div> </div> {/if} </div> </div> <div class="xc-layout-footer"> <div class="xc-layout-frame"> </div> </div> </div> <div id="alertModal" data-popup-modal="true" class="ui-popup"> </div> <div id="alertPopup" class="ui-popup popup"> </div> <div id="alertMessage" data-popup-modal="true" class="ui-popup message"> </div> </body>
      
      





このテンプレートを処理するために作成されたコントローラーは次のとおりです。



 $self = ""; xc("tpl likes=freeacc/blocks/likes comments=freeacc/blocks/comments :fetch"); if (isset(xc("tpl")->variable("this")->extra['site'])) { xc("tpl")->assign("site",xc("tpl")->variable("this")->extra['site']); $accounts = xc("call.application.freeacc::getAccounts",xc("tpl")->variable("this")->extra['site']); $self = xc("tpl freeacc/blocks/accounts")->apply($accounts); } else { xc("tpl")->assign("accounts",xc("plugin.numeric",true)->setData(xc("db freeacc_account")->fields("COUNT(*) as cnt")->cnt)); xc("tpl")->assign("sites",xc("plugin.numeric",true)->setData(xc("db freeacc_site")->fields("COUNT(*) as cnt")->cnt)); xc("tpl")->assign("favorites",xc("db freeacc_account:group(url):order(cnt down):limit(0,20)")->fields("url,COUNT(#id#) as cnt")); } xc("tpl")->assign("self", $self);
      
      







Webプログラマーなら誰でも、「表示」テンプレートを読んでも問題は生じないと思います。

コントローラーは次のアクションを実行します。

•いいねとコメントの変数を作成して、VKにいいねとコメントを表示する

•リクエストでサイトの可用性を確認します(サイトがない場合、メインページにあります)。

•テンプレート内にすばやくアクセスできるように、必要なサイトをサイト変数に入れます

•アプリケーション関数を呼び出して、目的のサイトのアカウントを取得します

•アカウントテーブルを使用してテンプレートを処理する

•データベース内のアカウント数で変数アカウントを作成します

•データベース内のサイトの数を含むサイト変数を作成します

•最も多くのアカウントを持つ20のサイトでお気に入り変数を作成します

追加フォームハンドラは次のようになります。



 $id = xc("call.application.freeacc::addAccount",$_GET['fields']); if ($id) { $GLOBALS['_RESULT']["result"] = ""; $GLOBALS['_RESULT']["debug"]["info"] = " "; $GLOBALS['_RESULT']["debug"]["type"] = "success"; } else { $GLOBALS['_RESULT']["result"] = ""; $GLOBALS['_RESULT']["debug"]["info"] = " "; $GLOBALS['_RESULT']["debug"]["type"] = "fail"; }
      
      







テンプレートを視覚化する

 $(function() { $(".block.table a.verify").live("click",function() { var obj = $(this); $$.database.get("ajax").onReadyState(function(result) { obj.parent().empty().text(" "); }); $$.database.get("ajax").send({"mode": "ajax", "type": "API", "api": "freeacc.account.verify", "parameters":[$(this).parents("div[data-account]").attr("data-account")]}); }); $(".block.table a.unverify").live("click",function() { var obj = $(this); $$.database.get("ajax").onReadyState(function(result) { obj.parent().empty().text(" "); }); $$.database.get("ajax").send({"mode": "ajax", "type": "API", "api": "freeacc.account.unverify", "parameters":[$(this).parents("div[data-account]").attr("data-account")]}); }); }); function postRequest() { $$.fn.redirect("/"+$$("#requestForm [name='url']").val()+"/"); }
      
      







ハブのテーマでは、広告と見なされるため、サービスへのリンクを指定できません。 「I PR」に移行するためのカルマはありません。 コメントまたはPMでリンクを示すことができます。 賢明な読者は簡単に「.ru」を追加しますが;)



PSハブへの私の最初の投稿、理解を願っています。

PPSは、サービスまたはテクノロジーについて追加しなかったことを追加する準備ができています。

ロシア語でのPPPSは問題なので、サイトと記事には多くのエラーがあると思います。 修正させていただきます!



UPD:理解をもって治療してくれた人々に感謝します! 誰も技術については尋ねない、多分私は、システムの全体的なダイナミクスが明確でないと少し言った



All Articles