source: branches/comu-ver2/patches/GoogleAnalytics_plugin.patch @ 18225

Revision 18225, 21.2 KB checked in by nanasess, 15 years ago (diff)

コミュニティの内容をフィードバック

RevLine 
[18223]1Index: html/user_data/plugins/plugin_menu.tpl
2===================================================================
3--- html/user_data/plugins/plugin_menu.tpl  (リビジョン 0)
4+++ html/user_data/plugins/plugin_menu.tpl  (リビジョン 0)
[18225]5@@ -0,0 +1,33 @@
[18223]6+<ul id="navi-plugin-menu" class="level1">
7+</ul>
8+<script type="text/javascript">
[18225]9+//<![CDATA[
[18223]10+$(function(){
11+   $.ajax({
12+    url: '<!--{$smarty.const.PLUGIN_URL}-->plugins.xml',
13+    type: 'GET',
14+    dataType: 'xml',
15+    timeout: 2000,
16+    error: function(){
17+        alert("xmlファイルの読み込みに失敗しました");
18+    },
19+    success: function(xml){
20+        $(xml).find("plugin").each(function(){
21+            var item_text = $(this).find("name").text();
22+            var item_path = $(this).find("path").text();
23+
24+            $("<li id='navi-plugin-index'></li>")
[18225]25+               .html("<a href='javascript:;'><span>" + item_text + "</span></a>")
[18223]26+               .appendTo('ul#navi-plugin-menu')
27+               .click(function() {
28+                   win03('<!--{$smarty.const.PLUGIN_URL}-->' + item_path
29+                          + '/index.php', 'plugins', '800','600');
30+                   return false;
31+               });
32+        });
33+        $("li.plugin_menu").html("");
34+    }
35+    });
36+});
[18225]37+//]]>
[18223]38+</script>
39Index: html/user_data/plugins/plugins.xml
40===================================================================
41--- html/user_data/plugins/plugins.xml  (リビジョン 0)
42+++ html/user_data/plugins/plugins.xml  (リビジョン 0)
43@@ -0,0 +1,7 @@
44+<?xml version="1.0" encoding="utf-8"?>
45+<plugins>
46+  <plugin>
47+    <name>Google Analytics</name>
48+    <path>google_analytics</path>
49+  </plugin>
50+</plugins>
51Index: html/user_data/plugins/google_analytics/sql/delete.sql
52===================================================================
53--- html/user_data/plugins/google_analytics/sql/delete.sql  (リビジョン 0)
54+++ html/user_data/plugins/google_analytics/sql/delete.sql  (リビジョン 0)
55@@ -0,0 +1,2 @@
56+DELETE FROM dtb_bloc WHERE filename = 'google_analytics';
57+DELETE FROM dtb_blocposition WHERE filename = 'google_analytics';
58\ No newline at end of file
59Index: html/user_data/plugins/google_analytics/sql/insert.sql
60===================================================================
61--- html/user_data/plugins/google_analytics/sql/insert.sql  (リビジョン 0)
62+++ html/user_data/plugins/google_analytics/sql/insert.sql  (リビジョン 0)
63@@ -0,0 +1,2 @@
64+INSERT INTO dtb_bloc (bloc_name, tpl_path, filename, php_path, del_flg) VALUES ('Google Analytics', 'user_data/plugins/google_analytics/tpl/ga.tpl', 'google_analytics', 'user_data/plugins/google_analytics/ga.php', 1);
65+INSERT INTO dtb_blocposition (page_id, target_id, bloc_id, bloc_row, filename, anywhere) VALUES (1, 10, (SELECT bloc_id FROM dtb_bloc WHERE filename = 'google_analytics'), 0, 'google_analytics', 1);
66\ No newline at end of file
67Index: html/user_data/plugins/google_analytics/tpl/ga.tpl
68===================================================================
69--- html/user_data/plugins/google_analytics/tpl/ga.tpl  (リビジョン 0)
70+++ html/user_data/plugins/google_analytics/tpl/ga.tpl  (リビジョン 0)
71@@ -0,0 +1,9 @@
72+<script type="text/javascript">
73+var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
74+document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
75+</script>
76+<script type="text/javascript">
77+try {
78+var pageTracker = _gat._getTracker("UA-<!--{$smarty.const.GA_UA}-->");
79+pageTracker._trackPageview();
80+} catch(err) {}</script>
81Index: html/user_data/plugins/google_analytics/tpl/index.tpl
82===================================================================
83--- html/user_data/plugins/google_analytics/tpl/index.tpl   (リビジョン 0)
84+++ html/user_data/plugins/google_analytics/tpl/index.tpl   (リビジョン 0)
85@@ -0,0 +1,52 @@
86+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
87+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
88+
89+<head>
90+<meta http-equiv="content-type" content="application/xhtml+xml; charset=<!--{$smarty.const.CHAR_CODE}-->" />
91+<meta http-equiv="content-script-type" content="text/javascript" />
92+<meta http-equiv="content-style-type" content="text/css" />
93+<link rel="stylesheet" href="<!--{$TPL_DIR}-->css/admin_contents.css" type="text/css" media="all" />
94+<script type="text/javascript" src="<!--{$TPL_DIR}-->js/css.js"></script>
95+<script type="text/javascript" src="<!--{$TPL_DIR}-->js/navi.js"></script>
96+<script type="text/javascript" src="<!--{$TPL_DIR}-->js/win_op.js"></script>
97+<script type="text/javascript" src="<!--{$TPL_DIR}-->js/site.js"></script>
98+<script type="text/javascript" src="<!--{$TPL_DIR}-->js/jquery.js"></script>
99+<script type="text/javascript" src="<!--{$TPL_DIR}-->js/admin.js"></script>
100+<title><!--{$tpl_subtitle}--></title>
101+<script type="text/javascript">
102+
103+</script>
104+<style type="text/css">
105+@charset "UTF-8";
106+</style>
107+</head>
108+
109+<body onload="<!--{$tpl_onload}-->" class="authority_0" style="min_width: 400px">
110+<noscript>
111+  <p>JavaScript を有効にしてご利用下さい.</p>
112+</noscript>
113+
114+<div id="container">
115+<a name="top"></a>
116+<!--▼CONTENTS-->
117+<h1>Google Analytics Plugin</h1>
118+<div id="contents" class="clear-block">
119+  <form method="post" action="index.php">
120+    <div id="system" class="contents-main">
121+      <table class="list">
122+   <tr>
123+     <th>ウェブ プロパティ ID</th>
124+     <td>UA-<input type="text" name="ga_ua" value="<!--{$smarty.const.GA_UA}-->" /></td>
125+   </tr>
126+      </table>
127+      <div class="btn addnew">
128+   <input type="hidden" name="mode" value="register" />
129+   <button type="submit"><span>この内容で登録する</span></button>
130+      </div>
131+    </div>
132+  </form>
133+</div>
134+<!--▲CONTENTS-->
135+</div>
136+</body>
137+</html>
138Index: html/user_data/plugins/google_analytics/require.php
139===================================================================
140--- html/user_data/plugins/google_analytics/require.php (リビジョン 0)
141+++ html/user_data/plugins/google_analytics/require.php (リビジョン 0)
142@@ -0,0 +1,6 @@
143+<?php
144+/*
145+ * EC-CUBE 本体で, このプラグインの関数を使用したい場合は, ここで require する
146+ */
147+require_once(PLUGIN_PATH . "google_analytics/classes/pages/ga_config.php");
148+?>
149\ No newline at end of file
150Index: html/user_data/plugins/google_analytics/classes/pages/ga_config.php
151===================================================================
152--- html/user_data/plugins/google_analytics/classes/pages/ga_config.php (リビジョン 0)
153+++ html/user_data/plugins/google_analytics/classes/pages/ga_config.php (リビジョン 0)
154@@ -0,0 +1,3 @@
155+<?php
156+define('GA_UA', '');
157+?>
158Index: html/user_data/plugins/google_analytics/classes/pages/LC_Page_FrontParts_Bloc_GoogleAnalytics.php
159===================================================================
160--- html/user_data/plugins/google_analytics/classes/pages/LC_Page_FrontParts_Bloc_GoogleAnalytics.php   (リビジョン 0)
161+++ html/user_data/plugins/google_analytics/classes/pages/LC_Page_FrontParts_Bloc_GoogleAnalytics.php   (リビジョン 0)
162@@ -0,0 +1,70 @@
163+<?php
164+/*
165+ * This file is part of EC-CUBE
166+ *
167+ * Copyright(c) 2000-2009 LOCKON CO.,LTD. All Rights Reserved.
168+ *
169+ * http://www.lockon.co.jp/
170+ *
171+ * This program is free software; you can redistribute it and/or
172+ * modify it under the terms of the GNU General Public License
173+ * as published by the Free Software Foundation; either version 2
174+ * of the License, or (at your option) any later version.
175+ *
176+ * This program is distributed in the hope that it will be useful,
177+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
178+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
179+ * GNU General Public License for more details.
180+ *
181+ * You should have received a copy of the GNU General Public License
182+ * along with this program; if not, write to the Free Software
183+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
184+ */
185+
186+// {{{ requires
187+require_once CLASS_PATH . "pages/LC_Page.php";
188+
189+/**
190+ * Google Analytics プラグインを制御するクラス.
191+ *
192+ * @package Page
193+ * @author Kentaro Ohkouchi
194+ * @version $Id$
195+ */
196+class LC_Page_FrontParts_Bloc_GoogleAnalytics extends LC_Page {
197+
198+    // }}}
199+    // {{{ functions
200+
201+    /**
202+     * Page を初期化する.
203+     *
204+     * @return void
205+     */
206+    function init() {
207+        parent::init();
208+        $this->tpl_mainpage = USER_PATH . 'plugins/google_analytics/tpl/ga.tpl';
209+        $this->tpl_subtitle = "Google Analytics Plugin";
210+    }
211+
212+    /**
213+     * Page のプロセス.
214+     *
215+     * @return void
216+     */
217+    function process() {
218+        $objView = new SC_SiteView();
219+        $objView->assignobj($this);
220+        $objView->display($this->tpl_mainpage);
221+    }
222+
223+    /**
224+     * デストラクタ.
225+     *
226+     * @return void
227+     */
228+    function destroy() {
229+        parent::destroy();
230+    }
231+}
232+?>
233\ No newline at end of file
234Index: html/user_data/plugins/google_analytics/classes/pages/LC_Page_Admin_GoogleAnalytics.php
235===================================================================
236--- html/user_data/plugins/google_analytics/classes/pages/LC_Page_Admin_GoogleAnalytics.php (リビジョン 0)
237+++ html/user_data/plugins/google_analytics/classes/pages/LC_Page_Admin_GoogleAnalytics.php (リビジョン 0)
238@@ -0,0 +1,139 @@
239+<?php
240+/*
241+ * This file is part of EC-CUBE
242+ *
243+ * Copyright(c) 2000-2009 LOCKON CO.,LTD. All Rights Reserved.
244+ *
245+ * http://www.lockon.co.jp/
246+ *
247+ * This program is free software; you can redistribute it and/or
248+ * modify it under the terms of the GNU General Public License
249+ * as published by the Free Software Foundation; either version 2
250+ * of the License, or (at your option) any later version.
251+ *
252+ * This program is distributed in the hope that it will be useful,
253+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
254+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
255+ * GNU General Public License for more details.
256+ *
257+ * You should have received a copy of the GNU General Public License
258+ * along with this program; if not, write to the Free Software
259+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
260+ */
261+
262+// {{{ requires
263+require_once CLASS_PATH . "pages/LC_Page.php";
264+
265+/**
266+ * Google Analytics プラグインの管理画面を制御するクラス.
267+ *
268+ * @package Page
269+ * @author Kentaro Ohkouchi
270+ * @version $Id$
271+ */
272+class LC_Page_Admin_GoogleAnalytics extends LC_Page {
273+
274+    // }}}
275+    // {{{ functions
276+
277+    /**
278+     * Page を初期化する.
279+     *
280+     * @return void
281+     */
282+    function init() {
283+        parent::init();
284+        $this->tpl_mainpage = PLUGIN_PATH . 'google_analytics/tpl/index.tpl';
285+        $this->tpl_subtitle = "Google Analytics Plugin";
286+
287+        if (empty($_POST["mode"])) {
288+            $_POST["mode"] = "";
289+        }
290+
291+        if (empty($_GET["mode"])) {
292+            $_GET["mode"] = "";
293+        }
294+    }
295+
296+    /**
297+     * Page のプロセス.
298+     *
299+     * POST パラメータ "mode" が register の場合は登録処理を行う.
300+     * 登録処理の後, 自ページをリロードし, GET パラメータ "mode" を付与する.
301+     * 登録に成功し, GET パラメータ "mode" の値が success の場合は
302+     * 「登録に成功しました」というメッセージをポップアップで表示する.
303+     * 登録に失敗し, GET パラメータ "mode" の値が failure の場合は
304+     * 「登録に失敗しました」というメッセージをポップアップで表示する.
305+     *
306+     * @return void
307+     */
308+    function process() {
309+        // 認証可否の判定
310+        SC_Utils_Ex::sfIsSuccess(new SC_Session());
311+
312+        switch ($_POST["mode"]) {
313+        case "register":
314+            if ($this->register($_POST['ga_ua'])) {
315+                $this->reload(array("mode" => "success"));
316+                exit;
317+            } else {
318+                $this->reload(array("mode" => "failure"));
319+                exit;
320+            }
321+            break;
322+
323+          default:
324+        }
325+
326+        switch ($_GET["mode"]) {
327+        case "success":
328+            $this->tpl_onload .= "window.alert('登録に成功しました。');";
329+            break;
330+
331+        case "failure":
332+            $this->tpl_onload .= "window.alert('登録に失敗しました。');";
333+            break;
334+
335+          default:
336+        }
337+
338+        $objView = new SC_AdminView();
339+        $objView->assignobj($this);
340+        $objView->display($this->tpl_mainpage);
341+    }
342+
343+    /**
344+     * UA の登録を行う.
345+     *
346+     * classes/pages/ga_config.php を読み込み, ウェブプロパティID の文字列
347+     * を定数として書き出す.
348+     *
349+     * @param string ウェブプロパティID の文字列
350+     * @return boolean 登録に成功した場合 true; 失敗した場合 false;
351+     */
352+    function register($ua) {
353+        $data = "<?php\ndefine('GA_UA', '"
354+            . htmlspecialchars($ua, ENT_QUOTES) . "');\n?>\n";
355+
356+        $configFile = PLUGIN_PATH . "google_analytics/classes/pages/ga_config.php";
357+        $handle = fopen($configFile, "w");
358+        if (!$handle) {
359+            return false;
360+        }
361+        // ファイルの内容を書き出す.
362+        if (fwrite($handle, $data) === false) {
363+            return false;
364+        }
365+        return true;
366+    }
367+
368+    /**
369+     * デストラクタ.
370+     *
371+     * @return void
372+     */
373+    function destroy() {
374+        parent::destroy();
375+    }
376+}
377+?>
378\ No newline at end of file
379Index: html/user_data/plugins/google_analytics/ga.php
380===================================================================
381--- html/user_data/plugins/google_analytics/ga.php  (リビジョン 0)
382+++ html/user_data/plugins/google_analytics/ga.php  (リビジョン 0)
383@@ -0,0 +1,12 @@
384+<?php
385+// {{{ requires
386+require_once(PLUGIN_PATH . "google_analytics/classes/pages/LC_Page_FrontParts_Bloc_GoogleAnalytics.php");
387+
388+// }}}
389+// {{{ generate page
390+
391+$objPage = new LC_Page_FrontParts_Bloc_GoogleAnalytics();
392+register_shutdown_function(array($objPage, "destroy"));
393+$objPage->init();
394+$objPage->process();
395+?>
396\ No newline at end of file
397Index: html/user_data/plugins/google_analytics/index.php
398===================================================================
399--- html/user_data/plugins/google_analytics/index.php   (リビジョン 0)
400+++ html/user_data/plugins/google_analytics/index.php   (リビジョン 0)
401@@ -0,0 +1,34 @@
402+<?php
403+/*
404+ * This file is part of EC-CUBE
405+ *
406+ * Copyright(c) 2000-2007 LOCKON CO.,LTD. All Rights Reserved.
407+ *
408+ * http://www.lockon.co.jp/
409+ *
410+ * This program is free software; you can redistribute it and/or
411+ * modify it under the terms of the GNU General Public License
412+ * as published by the Free Software Foundation; either version 2
413+ * of the License, or (at your option) any later version.
414+ *
415+ * This program is distributed in the hope that it will be useful,
416+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
417+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
418+ * GNU General Public License for more details.
419+ *
420+ * You should have received a copy of the GNU General Public License
421+ * along with this program; if not, write to the Free Software
422+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
423+ */
424+// {{{ requires
425+require_once("../../../admin/require.php");
426+require_once(USER_PATH . 'plugins/google_analytics/classes/pages/LC_Page_Admin_GoogleAnalytics.php');
427+
428+// }}}
429+// {{{ generate page
430+
431+$objPage = new LC_Page_Admin_GoogleAnalytics();
432+register_shutdown_function(array($objPage, 'destroy'));
433+$objPage->init();
434+$objPage->process();
435+?>
436\ No newline at end of file
437Index: html/install/sql/insert_data.sql
438===================================================================
439--- html/install/sql/insert_data.sql    (リビジョン 18218)
440+++ html/install/sql/insert_data.sql    (作業コピー)
441@@ -1114,5 +1114,8 @@
442 INSERT INTO mtb_constants VALUES ('OSTORE_E_C_BATCH_ERR', '"2010"', 522, 'オーナーズストア通信エラーコード');
443 INSERT INTO mtb_constants VALUES ('OPTION_FAVOFITE_PRODUCT', '1', 523, 'お気に入り商品登録(有効:1 無効:0)');
444 INSERT INTO mtb_constants VALUES ('IMAGE_RENAME', 'true', 525, '画像リネーム設定(商品画像のみ)(true:リネームする、false:リネームしない)');
445+INSERT INTO mtb_constants VALUES ('PLUGIN_DIR', '"plugins/"', 600, 'プラグインディレクトリ');
446+INSERT INTO mtb_constants VALUES ('PLUGIN_PATH', 'USER_PATH . PLUGIN_DIR', 601, 'プラグイン保存先');
447+INSERT INTO mtb_constants VALUES ('PLUGIN_URL', 'USER_URL . PLUGIN_DIR', 602, 'プラグイン URL');
448 
449 INSERT INTO dtb_module (module_id,module_code,module_name,update_date,create_date) VALUES (0,0,'patch',now(),now());
450Index: data/Smarty/templates/default/admin/main_frame.tpl
451===================================================================
452--- data/Smarty/templates/default/admin/main_frame.tpl  (リビジョン 18218)
453+++ data/Smarty/templates/default/admin/main_frame.tpl  (作業コピー)
[18225]454@@ -112,6 +112,10 @@
[18223]455     <li id="navi-ownersstore" class="<!--{if $tpl_mainno eq "ownersstore"}-->on<!--{/if}-->">
456         <a><span>OWNERS STORE</span></a>
457         <!--{include file="`$smarty.const.TEMPLATE_ADMIN_DIR`ownersstore/subnavi.tpl"}-->
458+    <li id="navi-plugin" class="<!--{if $tpl_mainno eq "plugin"}-->on<!--{/if}-->">
[18225]459+    </li>
[18223]460+      <a><span>プラグイン設定</span></a>
461+      <!--{include file="`$smarty.const.PLUGIN_PATH`plugin_menu.tpl"}-->
462     </li>
463 </ul>
464 <div style="clear: both;"></div>
465Index: data/require_plugin.php
466===================================================================
467--- data/require_plugin.php (リビジョン 18218)
468+++ data/require_plugin.php (作業コピー)
469@@ -1,5 +1,39 @@
470 <?php
471-  /*
472-   * プラグインを require するためのファイル
473-   */
474+/*
475+ * This file is part of EC-CUBE
476+ *
477+ * Copyright(c) 2000-2009 LOCKON CO.,LTD. All Rights Reserved.
478+ *
479+ * http://www.lockon.co.jp/
480+ *
481+ * This program is free software; you can redistribute it and/or
482+ * modify it under the terms of the GNU General Public License
483+ * as published by the Free Software Foundation; either version 2
484+ * of the License, or (at your option) any later version.
485+ *
486+ * This program is distributed in the hope that it will be useful,
487+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
488+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
489+ * GNU General Public License for more details.
490+ *
491+ * You should have received a copy of the GNU General Public License
492+ * along with this program; if not, write to the Free Software
493+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
494+ */
495+
496+// load plugins
497+/* -----------------------------------------------------------------------------
498+ * TODO PHP4 でも使えるように, XML パーサーをファクトリークラスで実装する
499+ * ----------------------------------------------------------------------------*/
500+if (version_compare("5", PHP_VERSION, "<")) {
501+    $plugins = file_get_contents(USER_PATH . "plugins/plugins.xml");
502+    $xml = new SimpleXMLElement($plugins);
503+    foreach ($xml->plugin as $plugin) {
504+   
505+        $requireFile = USER_PATH . "plugins/" . $plugin->path . "/require.php";
506+        if (file_exists($requireFile)) {
507+            require_once($requireFile);
508+        }
509+    }
510+}
511 ?>
512Index: data/mtb_constants_init.php
513===================================================================
514--- data/mtb_constants_init.php (リビジョン 18218)
515+++ data/mtb_constants_init.php (作業コピー)
[18224]516@@ -670,4 +670,10 @@
[18223]517 define('OPTION_FAVOFITE_PRODUCT','1');
518 /** 画像リネーム設定(商品画像のみ) */
519 define('IMAGE_RENAME', true);
520+/** プラグインディレクトリ */
521+define("PLUGIN_DIR", "plugins/");
522+/** プラグイン保存先 */
523+define("PLUGIN_PATH", USER_PATH . PLUGIN_DIR);
524+/** プラグイン URL */
525+define("PLUGIN_URL", USER_URL . PLUGIN_DIR);
526 ?>
527Index: data/class/pages/LC_Page.php
528===================================================================
529--- data/class/pages/LC_Page.php    (リビジョン 18218)
530+++ data/class/pages/LC_Page.php    (作業コピー)
531@@ -82,6 +82,9 @@
532      */
533     function init() {
534         $this->tpl_authority = $_SESSION['authority'];
535+        // XXX すべてのページで宣言するべき
536+        $layout = new SC_Helper_PageLayout_Ex();
537+        $layout->sfGetPageLayout($this, false);
538     }
539 
540     /**
541Index: data/class/helper/SC_Helper_PageLayout.php
542===================================================================
543--- data/class/helper/SC_Helper_PageLayout.php  (リビジョン 18218)
544+++ data/class/helper/SC_Helper_PageLayout.php  (作業コピー)
545@@ -61,9 +61,11 @@
546             $objPage->tpl_mainpage = USER_PATH . "templates/preview/"
547                 . TEMPLATE_NAME . "/" . $arrPageData[0]['filename'] . ".tpl";
548         }
549-               
550-        foreach($arrPageData[0] as $key => $val) {
551-            $debug_message.= "arrPageData[$key]:" . $val . "\n";
552+
553+        if (!empty($arrPageData[0])) {
554+            foreach($arrPageData[0] as $key => $val) {
555+                $debug_message.= "arrPageData[$key]:" . $val . "\n";
556+            }
557         }
558         
559         $debug_message.= "TEMPLATE_NAME:".TEMPLATE_NAME . "\n";
Note: See TracBrowser for help on using the repository browser.