git-svn-id: http://xe-core.googlecode.com/svn/trunk@1211 201d5d3c-b55e-5fd7-737f-ddc643e51545
|
|
@ -12,8 +12,8 @@
|
||||||
* 파일내에서 이루어집니다.
|
* 파일내에서 이루어집니다.
|
||||||
**/
|
**/
|
||||||
|
|
||||||
// called_position가 before_module_init 일때만 실행
|
// called_position가 before_module_init 이고 module이 admin이 아닐 경우
|
||||||
if($called_position == 'before_module_init') {
|
if($called_position == 'before_module_init' && $this->module != 'admin') {
|
||||||
Context::addJsFile('./modules/counter/tpl/js/counter.js');
|
Context::addJsFile('./modules/counter/tpl/js/counter.js');
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|
|
||||||
|
|
@ -284,6 +284,9 @@
|
||||||
$value = preg_replace('/(^\'|\'$){1}/','',$value);
|
$value = preg_replace('/(^\'|\'$){1}/','',$value);
|
||||||
|
|
||||||
switch($operation) {
|
switch($operation) {
|
||||||
|
case 'like_tail' :
|
||||||
|
$value = $value.'%';
|
||||||
|
break;
|
||||||
case 'like_prefix' :
|
case 'like_prefix' :
|
||||||
$value = '%'.$value;
|
$value = '%'.$value;
|
||||||
break;
|
break;
|
||||||
|
|
@ -322,6 +325,7 @@
|
||||||
if(!$value) return;
|
if(!$value) return;
|
||||||
return $name.' < '.$value;
|
return $name.' < '.$value;
|
||||||
break;
|
break;
|
||||||
|
case 'like_tail' :
|
||||||
case 'like_prefix' :
|
case 'like_prefix' :
|
||||||
case 'like' :
|
case 'like' :
|
||||||
if(!$value) return;
|
if(!$value) return;
|
||||||
|
|
|
||||||
|
|
@ -39,12 +39,12 @@
|
||||||
* php5 기반으로 바꾸게 되면 _autoload를 이용할 수 있기에 제거 대상
|
* php5 기반으로 바꾸게 되면 _autoload를 이용할 수 있기에 제거 대상
|
||||||
**/
|
**/
|
||||||
if(__DEBUG__) define('__ClassLosdStartTime__', getMicroTime());
|
if(__DEBUG__) define('__ClassLosdStartTime__', getMicroTime());
|
||||||
|
require_once("./classes/object/Object.class.php");
|
||||||
require_once("./classes/handler/Handler.class.php");
|
require_once("./classes/handler/Handler.class.php");
|
||||||
require_once("./classes/xml/XmlParser.class.php");
|
require_once("./classes/xml/XmlParser.class.php");
|
||||||
require_once("./classes/context/Context.class.php");
|
require_once("./classes/context/Context.class.php");
|
||||||
require_once("./classes/db/DB.class.php");
|
require_once("./classes/db/DB.class.php");
|
||||||
require_once("./classes/file/FileHandler.class.php");
|
require_once("./classes/file/FileHandler.class.php");
|
||||||
require_once("./classes/object/Object.class.php");
|
|
||||||
require_once("./classes/plugin/PluginHandler.class.php");
|
require_once("./classes/plugin/PluginHandler.class.php");
|
||||||
require_once("./classes/editor/EditorHandler.class.php");
|
require_once("./classes/editor/EditorHandler.class.php");
|
||||||
require_once("./classes/module/ModuleObject.class.php");
|
require_once("./classes/module/ModuleObject.class.php");
|
||||||
|
|
|
||||||
|
|
@ -3,5 +3,6 @@
|
||||||
<grants />
|
<grants />
|
||||||
<actions>
|
<actions>
|
||||||
<action name="dispCounterAdminIndex" type="view" admin_index="true" standalone="true" />
|
<action name="dispCounterAdminIndex" type="view" admin_index="true" standalone="true" />
|
||||||
|
<action name="procCounterExecute" type="controller" standalone="true" />
|
||||||
</actions>
|
</actions>
|
||||||
</module>
|
</module>
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,14 @@
|
||||||
$oModuleController = &getController('module');
|
$oModuleController = &getController('module');
|
||||||
$oModuleController->insertActionForward('counter', 'view', 'dispCounterAdminIndex');
|
$oModuleController->insertActionForward('counter', 'view', 'dispCounterAdminIndex');
|
||||||
|
|
||||||
|
$oCounterController = &getController('counter');
|
||||||
|
|
||||||
|
// 00000000000000 일자로 기록될 전체 방문 기록 row 추가
|
||||||
|
$oCounterController->insertTodayStatus('00000000000000');
|
||||||
|
|
||||||
|
// 오늘자 row입력
|
||||||
|
$oCounterController->insertTodayStatus();
|
||||||
|
|
||||||
return new Object();
|
return new Object();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -14,18 +14,71 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 로그 등록
|
* @brief 카운터 기록
|
||||||
**/
|
**/
|
||||||
function insertLog() {
|
function procCounterExecute() {
|
||||||
return executeQuery('counter.insertCounterLog');
|
// 로그를 검사
|
||||||
|
$oCounterModel = &getModel('counter');
|
||||||
|
|
||||||
|
// 오늘자 row가 있는지 체크하여 없으면 등록
|
||||||
|
if(!$oCounterModel->isInsertedTodayStatus()) {
|
||||||
|
$this->insertTodayStatus();
|
||||||
|
|
||||||
|
// 기존 row가 있으면 사용자 체크
|
||||||
|
} else {
|
||||||
|
|
||||||
|
// 등록되어 있지 않은 아이피일 경우
|
||||||
|
if(!$oCounterModel->isLogged()) {
|
||||||
|
// 로그 등록
|
||||||
|
$this->insertLog();
|
||||||
|
|
||||||
|
// unique 및 pageview 등록
|
||||||
|
$this->insertUniqueVisitor();
|
||||||
|
} else {
|
||||||
|
// pageview 등록
|
||||||
|
$this->insertPageView();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 현황 등록
|
* @brief 로그 등록
|
||||||
**/
|
**/
|
||||||
function insertStatus() {
|
function insertLog() {
|
||||||
return executeQuery('counter.insertCounterStatus');
|
$args->regdate = date("YmdHis");
|
||||||
|
$args->user_agent = $_SERVER['HTTP_USER_AGENT'];
|
||||||
|
return executeQuery('counter.insertCounterLog', $args);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief unique visitor 등록
|
||||||
|
**/
|
||||||
|
function insertUniqueVisitor() {
|
||||||
|
$args->regdate = date("Ymd000000");
|
||||||
|
return executeQuery('counter.updateCounterUnique', $args);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief pageview 등록
|
||||||
|
**/
|
||||||
|
function insertPageView() {
|
||||||
|
$args->regdate = date("Ymd000000");
|
||||||
|
return executeQuery('counter.updateCounterPageview', $args);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 오늘자 카운터 status 추가
|
||||||
|
**/
|
||||||
|
function insertTodayStatus($regdate = 0) {
|
||||||
|
if($regdate) $args->regdate = $regdate;
|
||||||
|
else $args->regdate = date("Ymd000000");
|
||||||
|
executeQuery('counter.insertTodayStatus', $args);
|
||||||
|
|
||||||
|
// 로그 등록
|
||||||
|
$this->insertLog();
|
||||||
|
|
||||||
|
// unique 및 pageview 등록
|
||||||
|
$this->insertUniqueVisitor();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,17 @@
|
||||||
* @brief 로그 검사
|
* @brief 로그 검사
|
||||||
**/
|
**/
|
||||||
function isLogged() {
|
function isLogged() {
|
||||||
$output = executeQuery('counter.getCounterLog');
|
$args->regdate = date("Ymd");
|
||||||
|
$output = executeQuery('counter.getCounterLog', $args);
|
||||||
|
return $output->data->count?true:false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 오늘자 카운터 현황 row 있는지 체크
|
||||||
|
**/
|
||||||
|
function isInsertedTodayStatus() {
|
||||||
|
$args->regdate = date("Ymd000000");
|
||||||
|
$output = executeQuery('counter.getTodayStatus', $args);
|
||||||
return $output->data->count?true:false;
|
return $output->data->count?true:false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -25,7 +35,19 @@
|
||||||
* @brief 특정 일의 접속 통계를 가져옴
|
* @brief 특정 일의 접속 통계를 가져옴
|
||||||
**/
|
**/
|
||||||
function getStatus($regdate) {
|
function getStatus($regdate) {
|
||||||
$args->regdate = $regdate;
|
// 여러개의 날자 로그를 가져올 경우
|
||||||
|
if(is_array($regdate)) {
|
||||||
|
$date_count = count($regdate);
|
||||||
|
for($i=0;$i<$date_count;$i++) {
|
||||||
|
if(strlen($regdate[$i])==8) $regdate[$i] = $regdate[$i].'000000';
|
||||||
|
$args->regdate = "'".implode("','",$regdate)."'";
|
||||||
|
}
|
||||||
|
// 단일 날자의 로그를 가져올 경우
|
||||||
|
} else {
|
||||||
|
if(strlen($regdate)==8) $regdate = $regdate.'000000';
|
||||||
|
$args->regdate = $regdate;
|
||||||
|
}
|
||||||
|
|
||||||
$output = executeQuery('counter.getCounterStatus', $args);
|
$output = executeQuery('counter.getCounterStatus', $args);
|
||||||
return $output->data;
|
return $output->data;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@
|
||||||
<column name="count(*)" alias="count"/>
|
<column name="count(*)" alias="count"/>
|
||||||
</columns>
|
</columns>
|
||||||
<conditions>
|
<conditions>
|
||||||
<condition operation="equal" column="regdate" var="regdate" default="curdate()" notnull="notnull" />
|
<condition operation="equal" column="ipaddress" var="ipaddress" default="ipaddress()" notnull="notnull" />
|
||||||
<condition operation="equal" column="ipaddress" var="ipaddress" default="ipaddress()" notnull="notnull" pipe="and" />
|
<condition operation="like_tail" column="regdate" var="regdate" notnull="notnull" pipe="and" />
|
||||||
</conditions>
|
</conditions>
|
||||||
</query>
|
</query>
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
<query id="getCounterStatus.xml" action="select">
|
<query id="getCounterStatus" action="select">
|
||||||
<tables>
|
<tables>
|
||||||
<table name="counter_status" />
|
<table name="counter_status" />
|
||||||
</tables>
|
</tables>
|
||||||
|
|
@ -6,6 +6,6 @@
|
||||||
<column name="*" />
|
<column name="*" />
|
||||||
</columns>
|
</columns>
|
||||||
<conditions>
|
<conditions>
|
||||||
<condition operation="equal" column="regdate" var="regdate" notnull="notnull" />
|
<condition operation="in" column="regdate" var="regdate" notnull="notnull" />
|
||||||
</conditions>
|
</conditions>
|
||||||
</query>
|
</query>
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
<table name="counter_log" />
|
<table name="counter_log" />
|
||||||
</tables>
|
</tables>
|
||||||
<columns>
|
<columns>
|
||||||
<column name="regdate" var="regdate" default="curdate()" />
|
<column name="regdate" var="regdate" default="curdate()" notnull="notnull"/>
|
||||||
<column name="ipaddress" var="ipaddress" notnull="notnull" default="ipaddress()" />
|
<column name="ipaddress" var="ipaddress" notnull="notnull" default="ipaddress()" />
|
||||||
<column name="user_agent" var="user_agent" />
|
<column name="user_agent" var="user_agent" />
|
||||||
</columns>
|
</columns>
|
||||||
|
|
|
||||||
|
|
@ -1,8 +0,0 @@
|
||||||
<query id="insertCounterStatus" action="insert">
|
|
||||||
<tables>
|
|
||||||
<table name="counter_status" />
|
|
||||||
</tables>
|
|
||||||
<columns>
|
|
||||||
<column name="regdate" var="regdate" default="curdate()" />
|
|
||||||
</columns>
|
|
||||||
</query>
|
|
||||||
|
|
@ -1,12 +1,12 @@
|
||||||
<query id="updateCounterPageView" action="update">
|
<query id="updateCounterPageview" action="update">
|
||||||
<tables>
|
<tables>
|
||||||
<table name="counter_status" />
|
<table name="counter_status" />
|
||||||
</tables>
|
</tables>
|
||||||
<columns>
|
<columns>
|
||||||
<column name="unique_visitor" default="plus(1)" />
|
<column name="pageview" default="plus(1)" />
|
||||||
</columns>
|
</columns>
|
||||||
<conditions>
|
<conditions>
|
||||||
<condition operation="equal" column="regdate" default="00000000000000" />
|
<condition operation="equal" column="regdate" notnull="notnull" default="00000000000000" />
|
||||||
<condition operation="equal" column="regdate" default="curdate()" pipe="or" />
|
<condition operation="equal" column="regdate" var="regdate" notnull="notnull" pipe="or" />
|
||||||
</conditions>
|
</conditions>
|
||||||
</query>
|
</query>
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,13 @@
|
||||||
<query id="updateCounterUnique" action="update">
|
<query id="updateCounterUnique" action="update">
|
||||||
<tables>
|
<tables>
|
||||||
<table name="documents" />
|
<table name="counter_status" />
|
||||||
</tables>
|
</tables>
|
||||||
<columns>
|
<columns>
|
||||||
<column name="unique_visitor" default="plus(1)" />
|
<column name="unique_visitor" default="plus(1)" />
|
||||||
<column name="pageview" default="plus(1)" />
|
<column name="pageview" default="plus(1)" />
|
||||||
</columns>
|
</columns>
|
||||||
<conditions>
|
<conditions>
|
||||||
<condition operation="equal" column="regdate" default="00000000000000" />
|
<condition operation="equal" column="regdate" notnull="notnull" default="00000000000000" />
|
||||||
<condition operation="equal" column="regdate" default="curdate()" pipe="or" />
|
<condition operation="equal" column="regdate" var="regdate" notnull="notnull" pipe="or" />
|
||||||
</conditions>
|
</conditions>
|
||||||
</query>
|
</query>
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
<table name="counter_log">
|
<table name="counter_log">
|
||||||
<column name="regdate" type="date" index="idx_counter_log" />
|
|
||||||
<column name="ipaddress" type="varchar" size="250" notnull="notnull" index="idx_counter_log" />
|
<column name="ipaddress" type="varchar" size="250" notnull="notnull" index="idx_counter_log" />
|
||||||
|
<column name="regdate" type="date" index="idx_counter_log" />
|
||||||
<column name="user_agent" type="varchar" size="250" />
|
<column name="user_agent" type="varchar" size="250" />
|
||||||
</table>
|
</table>
|
||||||
|
|
|
||||||
9
plugins/counter_status/conf/info.xml
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<plugin version="0.1">
|
||||||
|
<title xml:lang="ko">로그인 정보 출력</title>
|
||||||
|
<author email_address="zero@zeroboard.com" link="http://www.zeroboard.com" date="2007. 2. 28">
|
||||||
|
<name xml:lang="ko">제로</name>
|
||||||
|
<description xml:lang="ko">로그인 폼이나 로그인 정보를 출력합니다</description>
|
||||||
|
</author>
|
||||||
|
<extra_vars />
|
||||||
|
</plugin>
|
||||||
36
plugins/counter_status/login_info.class.php
Normal file
|
|
@ -0,0 +1,36 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* @class login_info
|
||||||
|
* @author zero (zero@nzeo.com)
|
||||||
|
* @version 0.1
|
||||||
|
* @brief 로그인 폼을 출력하는 플러그인
|
||||||
|
*
|
||||||
|
* $logged_info를 이용하며 이는 미리 설정되어 있음
|
||||||
|
**/
|
||||||
|
|
||||||
|
class login_info extends PluginHandler {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 플러그인의 실행 부분
|
||||||
|
* ./plugins/플러그인/conf/info.xml에 선언한 extra_vars를 args로 받는다
|
||||||
|
* 결과를 만든후 print가 아니라 return 해주어야 한다
|
||||||
|
**/
|
||||||
|
function proc($args) {
|
||||||
|
// 변수 설정
|
||||||
|
Context::set('style', $args->style);
|
||||||
|
|
||||||
|
// 템플릿의 스킨 경로를 지정 (skin, colorset에 따른 값을 설정)
|
||||||
|
$tpl_path = sprintf('%sskins/%s', $this->plugin_path, $args->skin);
|
||||||
|
Context::set('colorset', $args->colorset);
|
||||||
|
|
||||||
|
// 템플릿 파일을 지정
|
||||||
|
$tpl_file = 'login_info';
|
||||||
|
|
||||||
|
// 템플릿 컴파일
|
||||||
|
$oTemplate = new TemplateHandler();
|
||||||
|
return $oTemplate->compile($tpl_path, $tpl_file);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
?>
|
||||||
14
plugins/counter_status/skins/default/filter/login.xml
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
<filter name="plugin_login" module="member" act="procMemberLogin">
|
||||||
|
<form>
|
||||||
|
<node target="user_id" required="true" filter="user_id"/>
|
||||||
|
<node target="password" required="true" />
|
||||||
|
</form>
|
||||||
|
<parameter>
|
||||||
|
<param name="user_id" target="user_id" />
|
||||||
|
<param name="password" target="password" />
|
||||||
|
</parameter>
|
||||||
|
<response callback_func="completeLogin">
|
||||||
|
<tag name="error" />
|
||||||
|
<tag name="message" />
|
||||||
|
</response>
|
||||||
|
</filter>
|
||||||
7
plugins/counter_status/skins/default/filter/logout.xml
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
<filter name="plugin_logout" module="member" act="procMemberLogout">
|
||||||
|
<form />
|
||||||
|
<response>
|
||||||
|
<tag name="error" />
|
||||||
|
<tag name="message" />
|
||||||
|
</response>
|
||||||
|
</filter>
|
||||||
BIN
plugins/counter_status/skins/default/images/icon_friend_list.gif
Normal file
|
After Width: | Height: | Size: 556 B |
BIN
plugins/counter_status/skins/default/images/icon_key.gif
Normal file
|
After Width: | Height: | Size: 505 B |
BIN
plugins/counter_status/skins/default/images/icon_last_login.gif
Normal file
|
After Width: | Height: | Size: 967 B |
BIN
plugins/counter_status/skins/default/images/icon_message_box.gif
Normal file
|
After Width: | Height: | Size: 559 B |
BIN
plugins/counter_status/skins/default/images/icon_note.gif
Normal file
|
After Width: | Height: | Size: 534 B |
BIN
plugins/counter_status/skins/default/images/icon_profile.gif
Normal file
|
After Width: | Height: | Size: 535 B |
31
plugins/counter_status/skins/default/js/login.js
Normal file
|
|
@ -0,0 +1,31 @@
|
||||||
|
/* 로그인 영역에 포커스 */
|
||||||
|
function doFocusUserId(fo_id) {
|
||||||
|
var fo_obj = xGetElementById(fo_id);
|
||||||
|
if(xGetCookie('user_id')) {
|
||||||
|
fo_obj.user_id.value = xGetCookie('user_id');
|
||||||
|
fo_obj.remember_user_id.checked = true;
|
||||||
|
try{
|
||||||
|
fo_obj.password.focus();
|
||||||
|
} catch(e) {};
|
||||||
|
} else {
|
||||||
|
try{
|
||||||
|
fo_obj.user_id.focus();
|
||||||
|
} catch(e) {};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 로그인 후 */
|
||||||
|
function completeLogin(ret_obj, response_tags, params, fo_obj) {
|
||||||
|
if(fo_obj.remember_user_id && fo_obj.remember_user_id.checked) {
|
||||||
|
var expire = new Date();
|
||||||
|
expire.setTime(expire.getTime()+ (7000 * 24 * 3600000));
|
||||||
|
xSetCookie('user_id', fo_obj.user_id.value, expire);
|
||||||
|
}
|
||||||
|
|
||||||
|
var url = location.href.setQuery('act','');
|
||||||
|
location.href = location.href.setQuery('act','');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
83
plugins/counter_status/skins/default/login_info.html
Normal file
|
|
@ -0,0 +1,83 @@
|
||||||
|
<!-- colorset의 값에 따라 css 파일을 import 한다 -->
|
||||||
|
<!--@if($colorset=="normal"||!$colorset)-->
|
||||||
|
<!--%import("normal/style.css")-->
|
||||||
|
<!--@end-->
|
||||||
|
|
||||||
|
<!-- 로그인 사용자일 경우 로그인 정보를 출력 -->
|
||||||
|
<!--@if($logged_info)-->
|
||||||
|
<!--%import("./filter/logout.xml")-->
|
||||||
|
<div class="login_plugin">
|
||||||
|
|
||||||
|
<!-- 닉네임 + 로그아웃 -->
|
||||||
|
<div class="top_box">
|
||||||
|
<div class="logout">
|
||||||
|
<a href="#" onclick="location.href='{getUrl('act','dispMemberLogout')}';return false;">{$lang->cmd_logout}</a>
|
||||||
|
</div>
|
||||||
|
<div class="nick_name">
|
||||||
|
<div class="member_{$logged_info->member_srl}">{$logged_info->nick_name}</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="info_box">
|
||||||
|
|
||||||
|
<!-- 정보 수정 링크 -->
|
||||||
|
<div class="member_info">
|
||||||
|
<a href="#" onclick="location.href='{getUrl('act','dispMemberInfo')}';return false;">{$lang->cmd_view_member_info}</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="friend_list">
|
||||||
|
<a href="#" onclick="popopen('{getUrl('','module','member','act','dispMemberFriend')}','sendMessage');return false;">{$lang->cmd_view_friend}</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="message_box">
|
||||||
|
<a href="#" onclick="location.href='{getUrl('act','dispMemberMessages')}';return false;">{$lang->cmd_view_message_box}</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- 관리자일 경우 관리자 링크 -->
|
||||||
|
<!--@if($logged_info->is_admin=="Y")-->
|
||||||
|
<div class="link_admin">
|
||||||
|
<a href="#" onclick="winopen('./?module=admin');return false;">{$lang->cmd_management}</a>
|
||||||
|
</div>
|
||||||
|
<!--@end-->
|
||||||
|
|
||||||
|
<!-- 최종 록그인 시간 -->
|
||||||
|
<div class="last_login">
|
||||||
|
{$lang->last_login} : {zDate($logged_info->last_login, "Y-m-d H:i")}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- 비로그인 사용자일 경우 로그인 폼을 출력 -->
|
||||||
|
<!--@else-->
|
||||||
|
<!--%import("./filter/login.xml")-->
|
||||||
|
<!--%import("./js/login.js")-->
|
||||||
|
|
||||||
|
<div class="login_plugin">
|
||||||
|
<form action="./" method="get" onsubmit="return procFilter(this, plugin_login)" id="fo_login_plugin">
|
||||||
|
<div class="login_box">
|
||||||
|
<div class="header">{$lang->user_id}</div>
|
||||||
|
<div class="body">
|
||||||
|
<div><input type="text" name="user_id" id="login_form_user_id" class="input" /></div>
|
||||||
|
<div>
|
||||||
|
<input type="checkbox" name="remember_user_id" id="chk_remember_user_id" value="Y" />
|
||||||
|
<label for="chk_remember_user_id">{$lang->remember_user_id}</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="header">{$lang->password}</div>
|
||||||
|
<div class="body"><input type="password" name="password" class="input" /></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="button_area">
|
||||||
|
<input type="submit" value="{$lang->cmd_login}" class="submit_button" />
|
||||||
|
<input type="button" value="{$lang->cmd_signup}" class="signup_button" onclick="location.href='{getUrl('act','dispMemberSignUpForm')}';return false;" />
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
xAddEventListener(window, "load", function(){ doFocusUserId("fo_login_plugin"); });
|
||||||
|
</script>
|
||||||
|
</div>
|
||||||
|
<!--@end-->
|
||||||
BIN
plugins/counter_status/skins/default/normal/document_bullet.gif
Normal file
|
After Width: | Height: | Size: 282 B |
151
plugins/counter_status/skins/default/normal/style.css
Normal file
|
|
@ -0,0 +1,151 @@
|
||||||
|
.login_plugin {
|
||||||
|
border:3px solid #DDDDDD;
|
||||||
|
padding:6px;
|
||||||
|
height:80px;
|
||||||
|
margin-bottom:10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login_plugin .top_box {
|
||||||
|
height:22px;
|
||||||
|
border-bottom:2px dotted #DDDDDD;
|
||||||
|
overflow:hidden;
|
||||||
|
margin-bottom:5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login_plugin .top_box .nick_name {
|
||||||
|
font-weight:bold;
|
||||||
|
float:left;
|
||||||
|
color:#555555;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login_plugin .top_box .logout {
|
||||||
|
float:right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login_plugin .top_box .logout A {
|
||||||
|
text-decoration:none;
|
||||||
|
color:#737CF5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login_plugin .top_box .logout A:hover {
|
||||||
|
font-weight:bold;
|
||||||
|
letter-spacing:-1px;
|
||||||
|
color:#151F9E;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.login_plugin .info_box {
|
||||||
|
clear:both;
|
||||||
|
color:#555555;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login_plugin .info_box A:link {
|
||||||
|
text-decoration:none;
|
||||||
|
color:#555555;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login_plugin .info_box A:visited {
|
||||||
|
text-decoration:none;
|
||||||
|
color:#555555;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login_plugin .info_box A:hover {
|
||||||
|
text-decoration:none;
|
||||||
|
font-weight:bold;
|
||||||
|
letter-spacing:-1px;
|
||||||
|
color:#555555;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login_plugin .info_box div {
|
||||||
|
padding-left:15px;
|
||||||
|
margin:0px 0px 4px 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login_plugin .info_box .member_info {
|
||||||
|
background:url("../images/icon_profile.gif") no-repeat left;
|
||||||
|
float:left;
|
||||||
|
width:90px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login_plugin .info_box .friend_list {
|
||||||
|
background:url("../images/icon_friend_list.gif") no-repeat left;
|
||||||
|
float:left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login_plugin .info_box .message_box {
|
||||||
|
background:url("../images/icon_message_box.gif") no-repeat left;
|
||||||
|
float:left;
|
||||||
|
width:90px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login_plugin .info_box .link_admin {
|
||||||
|
background:url("../images/icon_key.gif") no-repeat left;
|
||||||
|
float:left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login_plugin .info_box .link_admin A {
|
||||||
|
color:#cd0000;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login_plugin .info_box .last_login {
|
||||||
|
clear:left;
|
||||||
|
background:url("../images/icon_last_login.gif") no-repeat left;
|
||||||
|
padding-left:15px;
|
||||||
|
margin-bottom:4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.login_plugin .login_box {
|
||||||
|
height:40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login_plugin .header {
|
||||||
|
float:left;
|
||||||
|
clear:left;
|
||||||
|
width:80px;
|
||||||
|
margin-bottom:5px;
|
||||||
|
font-weight:bold;
|
||||||
|
color:#555555;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login_plugin .body {
|
||||||
|
float:left;
|
||||||
|
width:100px;
|
||||||
|
margin-bottom:5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login_plugin .body .input {
|
||||||
|
width:90px;
|
||||||
|
height:13px;
|
||||||
|
border:1px solid #AAAAAA;
|
||||||
|
color:#555555;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login_plugin .body label {
|
||||||
|
cursor:pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login_plugin .button_area {
|
||||||
|
clear:both;
|
||||||
|
height:20px;
|
||||||
|
margin-top:5px;
|
||||||
|
text-align:center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login_plugin .button_area .submit_button {
|
||||||
|
width:80px;
|
||||||
|
height:18px;
|
||||||
|
border:1px solid #AAAAAA;
|
||||||
|
background-color:#555555;
|
||||||
|
color:#FFFFFF;
|
||||||
|
font-weight:bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.login_plugin .button_area .signup_button {
|
||||||
|
width:80px;
|
||||||
|
height:18px;
|
||||||
|
border:1px solid #555555;
|
||||||
|
background-color:#FFFFFF;
|
||||||
|
color:#000000;
|
||||||
|
font-weight:bold;
|
||||||
|
}
|
||||||
BIN
plugins/counter_status/skins/default/normal/title_bullet.gif
Normal file
|
After Width: | Height: | Size: 589 B |
13
plugins/counter_status/skins/default/skin.xml
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<skin>
|
||||||
|
<title xml:lang="ko">로그인 정보 출력 기본 스킨 </title>
|
||||||
|
<maker email_address="zero@zeroboard.com" link="http://www.zeroboard.com" date="2007. 2. 28">
|
||||||
|
<name xml:lang="ko">제로</name>
|
||||||
|
<description xml:lang="ko">newest_document의 기본 스킨</description>
|
||||||
|
</maker>
|
||||||
|
<colorset>
|
||||||
|
<color name="normal">
|
||||||
|
<title xml:lang="ko">기본</title>
|
||||||
|
</color>
|
||||||
|
</colorset>
|
||||||
|
<skin>
|
||||||