simulz님의 rss reader 추가
git-svn-id: http://xe-core.googlecode.com/svn/sandbox@3074 201d5d3c-b55e-5fd7-737f-ddc643e51545
35
widgets/rss_reader/conf/info.xml
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<widget version="#7">
|
||||
<title xml:lang="ko">RSS 리더</title>
|
||||
<author email_address="simulz@simulz.com" link="http://php.simulz.com" date="2007. 10. 26">
|
||||
<name xml:lang="ko">Simulz</name>
|
||||
<description xml:lang="ko">RSS 리더입니다.</description>
|
||||
</author>
|
||||
<extra_vars>
|
||||
<var id="title">
|
||||
<name xml:lang="ko">제목</name>
|
||||
<type>text</type>
|
||||
<description xml:lang="ko"></description>
|
||||
</var>
|
||||
<var id="rss_url">
|
||||
<name xml:lang="ko">RSS URL</name>
|
||||
<type>text</type>
|
||||
<description xml:lang="ko"></description>
|
||||
</var>
|
||||
<var id="page_limit">
|
||||
<name xml:lang="ko">페이지 수</name>
|
||||
<type>text</type>
|
||||
<description xml:lang="ko">기본 값 10</description>
|
||||
</var>
|
||||
<var id="date_format">
|
||||
<name xml:lang="ko">날짜 형식</name>
|
||||
<type>text</type>
|
||||
<description xml:lang="ko">기본 값 Y-m-d H:i:s</description>
|
||||
</var>
|
||||
<var id="rss_height">
|
||||
<name xml:lang="ko">본문 높이</name>
|
||||
<type>text</type>
|
||||
<description xml:lang="ko">select 스킨에서 본문 높이 (기본값 200px)</description>
|
||||
</var>
|
||||
</extra_vars>
|
||||
</widget>
|
||||
102
widgets/rss_reader/rss_reader.class.php
Normal file
|
|
@ -0,0 +1,102 @@
|
|||
<?php
|
||||
/**
|
||||
* @class rss_reader
|
||||
* @author Simulz (k10206@naver.com)
|
||||
* @brief RSS Reader
|
||||
**/
|
||||
|
||||
class rss_reader extends WidgetHandler {
|
||||
/**
|
||||
* @brief 위젯의 실행 부분
|
||||
*
|
||||
* ./widgets/위젯/conf/info.xml 에 선언한 extra_vars를 args로 받는다
|
||||
* 결과를 만든후 print가 아니라 return 해주어야 한다
|
||||
**/
|
||||
function proc($args) {
|
||||
// 위젯 자체적으로 설정한 변수들을 체크
|
||||
$title = $args->title;
|
||||
$PAGE_LIMIT = $args->page_limit ? $args->page_limit : 10;
|
||||
|
||||
// 날짜 형태
|
||||
$DATE_FORMAT = $args->date_format ? $args->date_format : "Y-m-d H:i:s";
|
||||
|
||||
$URL_parsed = parse_url($args->rss_url);
|
||||
|
||||
$host = $URL_parsed["host"];
|
||||
$port = $URL_parsed["port"];
|
||||
|
||||
if ($port == 0) $port = 80;
|
||||
|
||||
$path = $URL_parsed["path"];
|
||||
|
||||
if ($URL_parsed["query"] != "") $path .= "?".$URL_parsed["query"];
|
||||
|
||||
$out = "GET $path HTTP/1.0\r\nHost: $host\r\n\r\n";
|
||||
|
||||
$fp = @fsockopen($host, $port, $errno, $errstr, 30);
|
||||
if(!$fp) return new Object(-1, 'msg_fail_to_socket_open');
|
||||
|
||||
fputs($fp, $out);
|
||||
|
||||
$buff = '';
|
||||
|
||||
while (!feof($fp)) {
|
||||
$str = fgets($fp, 1024);
|
||||
if ( $start ) $buff .= $str;
|
||||
if ( $str == "\r\n" ) $start = true;
|
||||
}
|
||||
|
||||
fclose($fp);
|
||||
|
||||
$encoding = preg_match("/<\?xml.*encoding=\"(.+)\".*\?>/i", $buff, $matches);
|
||||
if($encoding && !eregi("UTF-8", $matches[1])) $buff = trim(iconv($matches[1]=="ks_c_5601-1987"?"EUC-KR":$matches[1], "UTF-8", $buff));
|
||||
|
||||
$buff = preg_replace("/<\?xml.*\?>/i", "", $buff);
|
||||
|
||||
$oXmlParser = new XmlParser();
|
||||
$xml_doc = $oXmlParser->parse($buff);
|
||||
|
||||
$rss->title = $xml_doc->rss->channel->title->body;
|
||||
$rss->link = $xml_doc->rss->channel->link->body;
|
||||
|
||||
if(!is_array($xml_doc->rss->channel->item)) return;
|
||||
|
||||
$rss_list = array();
|
||||
|
||||
foreach ($xml_doc->rss->channel->item as $key => $value) {
|
||||
if($key >= $PAGE_LIMIT) break;
|
||||
|
||||
unset($item);
|
||||
foreach($value as $key2 => $value2) {
|
||||
$item->{$key2} = $value2->body;
|
||||
}
|
||||
|
||||
$date = $item->pubdate;
|
||||
$item->date = date($DATE_FORMAT, strtotime($date));
|
||||
$array_date[$key] = strtotime($date);
|
||||
|
||||
$item->description = preg_replace('!<a href=!is','<a onclick="window.open(this.href);return false" href=', $item->description);
|
||||
|
||||
$rss_list[$key] = $item;
|
||||
}
|
||||
array_multisort($array_date, SORT_DESC, $rss_list);
|
||||
|
||||
|
||||
$widget_info->rss = $rss;
|
||||
$widget_info->rss_list = $rss_list;
|
||||
$widget_info->title = $title;
|
||||
$widget_info->rss_height = $args->rss_height ? $args->rss_height : 200;
|
||||
|
||||
Context::set('widget_info', $widget_info);
|
||||
|
||||
// 템플릿의 스킨 경로를 지정 (skin, colorset에 따른 값을 설정)
|
||||
$tpl_path = sprintf('%sskins/%s', $this->widget_path, $args->skin);
|
||||
Context::set('colorset', $args->colorset);
|
||||
|
||||
// 템플릿 컴파일
|
||||
$oTemplate = &TemplateHandler::getInstance();
|
||||
$output = $oTemplate->compile($tpl_path, 'list');
|
||||
return $output;
|
||||
}
|
||||
}
|
||||
?>
|
||||
33
widgets/rss_reader/skins/sz_select/css/select.css
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
.sz_rss_reader_select { width:100%; padding-bottom:15px; overflow:hidden; position:relative;}
|
||||
.sz_rss_reader_select h2 { height:21px; padding:9px 0 0 9px; font-size:1em;}
|
||||
.sz_rss_reader_select h2 a,
|
||||
.sz_rss_reader_select .tabcontent_rss a { text-decoration:none; color:#000000;}
|
||||
.sz_rss_reader_select h2 a:hover,
|
||||
.sz_rss_reader_select .tabcontent_rss a:hover { text-decoration:underline;}
|
||||
|
||||
.sz_rss_reader_select .tabcontentcontainer {width:100%;}
|
||||
|
||||
.sz_rss_reader_select .tabcontent_rss {display:none;width:100%; color:#555555;}
|
||||
|
||||
.sz_rss_reader_select .date { color:#999999; font:.9em Tahoma; white-space:nowrap; margin-right:5px;}
|
||||
|
||||
.sz_rss_reader_select .sz_Box_000{ margin:1px; border:solid 0;padding:0;}
|
||||
.sz_rss_reader_select .sz_Box_001{ margin:1px; border:solid 1px;border-color:#E7E7E7;padding:5px 5px 2px 5px;background-color:#F4F4F4;color:#696969;}
|
||||
.sz_rss_reader_select .sz_Box_002{ margin:1px; border:solid 1px;border-color:#DDEAA8;padding:5px 5px 2px 5px;background-color:#FBFDF1;color:#99B81A;}
|
||||
.sz_rss_reader_select .sz_Box_003{ margin:1px; border:solid 1px;border-color:#F9D5D5;padding:5px 5px 2px 5px;background-color:#FEF6F6;color:#D98383;}
|
||||
.sz_rss_reader_select .sz_Box_004{ margin:1px; border:solid 1px;border-color:#EFDAF4;padding:5px 5px 2px 5px;background-color:#FCF7FD;color:#AF69C0;}
|
||||
.sz_rss_reader_select .sz_Box_005{ margin:1px; border:solid 1px;border-color:#DCDFF6;padding:5px 5px 2px 5px;background-color:#F6F7FE;color:#7381EA;}
|
||||
.sz_rss_reader_select .sz_Box_006{ margin:1px; border:solid 1px;border-color:#DAEAEE;padding:5px 5px 2px 5px;background-color:#F0F6F8;color:#619DAC;}
|
||||
.sz_rss_reader_select .sz_Box_007{ margin:1px; border:solid 1px;border-color:#D5EDDD;padding:5px 5px 2px 5px;background-color:#EFF9F2;color:#6FB587;}
|
||||
.sz_rss_reader_select .sz_Box_008{ margin:1px; border:solid 1px;border-color:#FFEC15;padding:5px 5px 2px 5px;background-color:#FFFCDF;color:#FF9900;}
|
||||
.sz_rss_reader_select .sz_Box_009{ margin:1px; border:solid 1px;border-color:#9DD7E8;padding:5px 5px 2px 5px;background-color:#F8FDFF;color:#0A8DBD;}
|
||||
|
||||
.sz_rss_reader_select .sz_Box_001 h2 a { text-decoration:none; color:#696969;}
|
||||
.sz_rss_reader_select .sz_Box_002 h2 a { text-decoration:none; color:#99B81A;}
|
||||
.sz_rss_reader_select .sz_Box_003 h2 a { text-decoration:none; color:#D98383;}
|
||||
.sz_rss_reader_select .sz_Box_004 h2 a { text-decoration:none; color:#AF69C0;}
|
||||
.sz_rss_reader_select .sz_Box_005 h2 a { text-decoration:none; color:#7381EA;}
|
||||
.sz_rss_reader_select .sz_Box_006 h2 a { text-decoration:none; color:#619DAC;}
|
||||
.sz_rss_reader_select .sz_Box_007 h2 a { text-decoration:none; color:#6FB587;}
|
||||
.sz_rss_reader_select .sz_Box_008 h2 a { text-decoration:none; color:#FF9900;}
|
||||
.sz_rss_reader_select .sz_Box_009 h2 a { text-decoration:none; color:#0A8DBD;}
|
||||
BIN
widgets/rss_reader/skins/sz_select/images/black/bulletD0.gif
Normal file
|
After Width: | Height: | Size: 44 B |
BIN
widgets/rss_reader/skins/sz_select/images/black/lineNotice.gif
Normal file
|
After Width: | Height: | Size: 139 B |
BIN
widgets/rss_reader/skins/sz_select/images/forward.png
Normal file
|
After Width: | Height: | Size: 3.6 KiB |
BIN
widgets/rss_reader/skins/sz_select/images/new.gif
Normal file
|
After Width: | Height: | Size: 78 B |
BIN
widgets/rss_reader/skins/sz_select/images/white/bulletD0.gif
Normal file
|
After Width: | Height: | Size: 44 B |
BIN
widgets/rss_reader/skins/sz_select/images/white/lineNotice.gif
Normal file
|
After Width: | Height: | Size: 139 B |
17
widgets/rss_reader/skins/sz_select/js/tab.js
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
function tab_menu_select(tab_id, tabs, t, tab_obj){
|
||||
for(var i = 1; i <= tabs; i++) {
|
||||
eval("document.getElementById('tab"+tab_id+i+"')").style.display="none";
|
||||
if ( t == i ) {
|
||||
eval("document.getElementById('tab"+tab_id+i+"')").style.display="block";
|
||||
}
|
||||
}
|
||||
tab_obj.className="current"
|
||||
}
|
||||
|
||||
/* 높이 조절 */
|
||||
function resize_rss_tabcontent(tab_id, ms_height) {
|
||||
var obj = xGetElementById(tab_id)
|
||||
|
||||
if(xHeight(obj) > ms_height) obj.style.height = ms_height + 'px'
|
||||
obj.style.overflow = "auto"
|
||||
}
|
||||
36
widgets/rss_reader/skins/sz_select/list.html
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
<!--%import("css/select.css")-->
|
||||
<!--%import("js/tab.js")-->
|
||||
{@ $tab_id = mt_rand()}
|
||||
<div class="sz_rss_reader_select">
|
||||
<div class="sz_{$colorset}">
|
||||
<!--@if($widget_info->title)-->
|
||||
<h2 title="{date('Y-m-d H:i:s')}">{$widget_info->title}</h2>
|
||||
<!--@else-->
|
||||
<h2 title="{date('Y-m-d H:i:s')}"><a href="{$widget_info->rss->link}" onclick="window.open(this.href);return false">{$widget_info->rss->title}</a></h2>
|
||||
<!--@end-->
|
||||
<table>
|
||||
<tr><td>
|
||||
<div id="tablist">
|
||||
{@$i=1}
|
||||
<select onchange="tab_menu_select({$tab_id}, {count($widget_info->rss_list)}, this.value, this);resize_rss_tabcontent('tab{$tab_id}',{$widget_info->rss_height})">
|
||||
<!--@foreach($widget_info->rss_list as $key => $item)-->
|
||||
<option value="{$i}">{$item->title}</option>
|
||||
{@$i++}
|
||||
<!--@end-->
|
||||
</select>
|
||||
</div>
|
||||
</td></tr>
|
||||
</table>
|
||||
|
||||
{@$i=1}
|
||||
<DIV id="tab{$tab_id}" class="tabcontentcontainer">
|
||||
<!--@foreach($widget_info->rss_list as $key => $item)-->
|
||||
<div id="tab{$tab_id.$i}" class="tabcontent_rss" style="height:{$widget_info->rss_height}px;overflow:auto;<!--@if($i==1)-->display:block;<!--@end-->">
|
||||
<div class="date">{$item->date} | {$item->author} <a href="{$item->link}" onclick="window.open(this.href);return false"><img src="./images/forward.png" align="absmiddle" class="iePngFix"></a></div>
|
||||
{$item->description}
|
||||
</div>
|
||||
{@$i++}
|
||||
<!--@end-->
|
||||
</DIV>
|
||||
</div>
|
||||
</div>
|
||||
42
widgets/rss_reader/skins/sz_select/skin.xml
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<skin>
|
||||
<title xml:lang="ko">Simulz 스킨 (Select 메뉴)</title>
|
||||
<maker email_address="simulz@simulz.com" link="http://php.simulz.com" date="2007. 11. 5">
|
||||
<name xml:lang="ko">Simulz</name>
|
||||
<description xml:lang="ko">
|
||||
Simulz 스킨입니다.
|
||||
</description>
|
||||
</maker>
|
||||
<colorset>
|
||||
<color name="Box_000">
|
||||
<title xml:lang="ko">기본</title>
|
||||
</color>
|
||||
<color name="Box_001">
|
||||
<title xml:lang="ko">회색</title>
|
||||
</color>
|
||||
<color name="Box_002">
|
||||
<title xml:lang="ko">연두</title>
|
||||
</color>
|
||||
<color name="Box_003">
|
||||
<title xml:lang="ko">분홍</title>
|
||||
</color>
|
||||
<color name="Box_004">
|
||||
<title xml:lang="ko">보라</title>
|
||||
</color>
|
||||
<color name="Box_005">
|
||||
<title xml:lang="ko">밝은 파랑</title>
|
||||
</color>
|
||||
<color name="Box_006">
|
||||
<title xml:lang="ko">청록</title>
|
||||
</color>
|
||||
<color name="Box_007">
|
||||
<title xml:lang="ko">초록</title>
|
||||
</color>
|
||||
<color name="Box_008">
|
||||
<title xml:lang="ko">노랑</title>
|
||||
</color>
|
||||
<color name="Box_009">
|
||||
<title xml:lang="ko">파랑</title>
|
||||
</color>
|
||||
</colorset>
|
||||
</skin>
|
||||
32
widgets/rss_reader/skins/sz_xe/css/default.css
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
.sz_rss_reader { position:relative;}
|
||||
.sz_rss_reader h2 { height:21px; padding:9px 0 0 9px; font-size:1em;}
|
||||
|
||||
.sz_rss_reader ul li { height:20px; overflow:hidden; list-style:none; white-space:nowrap; }
|
||||
|
||||
.sz_rss_reader ul li .title a { color:#555555; font:0.9em Tahoma; text-decoration:none; }
|
||||
.sz_rss_reader ul li .title a:hover { text-decoration:underline; }
|
||||
|
||||
.sz_rss_reader ul li .date { color:#999999; font:.8em Tahoma; white-space:nowrap; margin-right:5px;}
|
||||
|
||||
.sz_rss_reader .sz_Box_000{ margin:1px; border:solid 0;padding:0;}
|
||||
.sz_rss_reader .sz_Box_001{ margin:1px; border:solid 1px;border-color:#E7E7E7;padding:5px 5px 2px 5px;background-color:#F4F4F4;color:#696969;}
|
||||
.sz_rss_reader .sz_Box_002{ margin:1px; border:solid 1px;border-color:#DDEAA8;padding:5px 5px 2px 5px;background-color:#FBFDF1;color:#99B81A;}
|
||||
.sz_rss_reader .sz_Box_003{ margin:1px; border:solid 1px;border-color:#F9D5D5;padding:5px 5px 2px 5px;background-color:#FEF6F6;color:#D98383;}
|
||||
.sz_rss_reader .sz_Box_004{ margin:1px; border:solid 1px;border-color:#EFDAF4;padding:5px 5px 2px 5px;background-color:#FCF7FD;color:#AF69C0;}
|
||||
.sz_rss_reader .sz_Box_005{ margin:1px; border:solid 1px;border-color:#DCDFF6;padding:5px 5px 2px 5px;background-color:#F6F7FE;color:#7381EA;}
|
||||
.sz_rss_reader .sz_Box_006{ margin:1px; border:solid 1px;border-color:#DAEAEE;padding:5px 5px 2px 5px;background-color:#F0F6F8;color:#619DAC;}
|
||||
.sz_rss_reader .sz_Box_007{ margin:1px; border:solid 1px;border-color:#D5EDDD;padding:5px 5px 2px 5px;background-color:#EFF9F2;color:#6FB587;}
|
||||
.sz_rss_reader .sz_Box_008{ margin:1px; border:solid 1px;border-color:#FFEC15;padding:5px 5px 2px 5px;background-color:#FFFCDF;color:#FF9900;}
|
||||
.sz_rss_reader .sz_Box_009{ margin:1px; border:solid 1px;border-color:#9DD7E8;padding:5px 5px 2px 5px;background-color:#F8FDFF;color:#0A8DBD;}
|
||||
|
||||
.sz_rss_reader .sz_Box_001 h2 a { text-decoration:none; color:#696969;}
|
||||
.sz_rss_reader .sz_Box_002 h2 a { text-decoration:none; color:#99B81A;}
|
||||
.sz_rss_reader .sz_Box_003 h2 a { text-decoration:none; color:#D98383;}
|
||||
.sz_rss_reader .sz_Box_004 h2 a { text-decoration:none; color:#AF69C0;}
|
||||
.sz_rss_reader .sz_Box_005 h2 a { text-decoration:none; color:#7381EA;}
|
||||
.sz_rss_reader .sz_Box_006 h2 a { text-decoration:none; color:#619DAC;}
|
||||
.sz_rss_reader .sz_Box_007 h2 a { text-decoration:none; color:#6FB587;}
|
||||
.sz_rss_reader .sz_Box_008 h2 a { text-decoration:none; color:#FF9900;}
|
||||
.sz_rss_reader .sz_Box_009 h2 a { text-decoration:none; color:#0A8DBD;}
|
||||
|
||||
.sz_rss_reader h2 a:hover { text-decoration:underline;}
|
||||
BIN
widgets/rss_reader/skins/sz_xe/images/default/bullet.gif
Normal file
|
After Width: | Height: | Size: 282 B |
BIN
widgets/rss_reader/skins/sz_xe/images/default/bulletD0.gif
Normal file
|
After Width: | Height: | Size: 44 B |
BIN
widgets/rss_reader/skins/sz_xe/images/default/lineNotice.gif
Normal file
|
After Width: | Height: | Size: 139 B |
BIN
widgets/rss_reader/skins/sz_xe/images/ico_down.gif
Normal file
|
After Width: | Height: | Size: 172 B |
BIN
widgets/rss_reader/skins/sz_xe/images/ico_new01.gif
Normal file
|
After Width: | Height: | Size: 881 B |
BIN
widgets/rss_reader/skins/sz_xe/images/ico_up.gif
Normal file
|
After Width: | Height: | Size: 165 B |
BIN
widgets/rss_reader/skins/sz_xe/images/new.gif
Normal file
|
After Width: | Height: | Size: 78 B |
BIN
widgets/rss_reader/skins/sz_xe/images/num_realtime1.gif
Normal file
|
After Width: | Height: | Size: 64 B |
BIN
widgets/rss_reader/skins/sz_xe/images/num_realtime10.gif
Normal file
|
After Width: | Height: | Size: 74 B |
BIN
widgets/rss_reader/skins/sz_xe/images/num_realtime2.gif
Normal file
|
After Width: | Height: | Size: 66 B |
BIN
widgets/rss_reader/skins/sz_xe/images/num_realtime3.gif
Normal file
|
After Width: | Height: | Size: 66 B |
BIN
widgets/rss_reader/skins/sz_xe/images/num_realtime4.gif
Normal file
|
After Width: | Height: | Size: 66 B |
BIN
widgets/rss_reader/skins/sz_xe/images/num_realtime5.gif
Normal file
|
After Width: | Height: | Size: 64 B |
BIN
widgets/rss_reader/skins/sz_xe/images/num_realtime6.gif
Normal file
|
After Width: | Height: | Size: 67 B |
BIN
widgets/rss_reader/skins/sz_xe/images/num_realtime7.gif
Normal file
|
After Width: | Height: | Size: 64 B |
BIN
widgets/rss_reader/skins/sz_xe/images/num_realtime8.gif
Normal file
|
After Width: | Height: | Size: 68 B |
BIN
widgets/rss_reader/skins/sz_xe/images/num_realtime9.gif
Normal file
|
After Width: | Height: | Size: 69 B |
19
widgets/rss_reader/skins/sz_xe/list.html
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
<!--%import("css/default.css")-->
|
||||
|
||||
<div class="sz_rss_reader">
|
||||
<div class="sz_{$colorset}">
|
||||
<!--@if($widget_info->title)-->
|
||||
<h2 title="{date('Y-m-d H:i:s')}">{$widget_info->title}</h2>
|
||||
<!--@else-->
|
||||
<h2 title="{date('Y-m-d H:i:s')}"><a href="{$widget_info->rss->link}" onclick="window.open(this.href);return false">{$widget_info->rss->title}</a></h2>
|
||||
<!--@end-->
|
||||
<ul>
|
||||
<!--@foreach($widget_info->rss_list as $key => $item)-->
|
||||
<li title="{strip_tags($item->description)}">
|
||||
<span class="date">{$item->date}</span>
|
||||
<span class="title"><a href="{$item->link}" onclick="window.open(this.href);return false">{$item->title}</a></span>
|
||||
</li>
|
||||
<!--@end-->
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
42
widgets/rss_reader/skins/sz_xe/skin.xml
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<skin>
|
||||
<title xml:lang="ko">Simulz 스킨 (목록형)</title>
|
||||
<maker email_address="simulz@simulz.com" link="http://www.simulz.com" date="2007. 10. 26">
|
||||
<name xml:lang="ko">Simulz</name>
|
||||
<description xml:lang="ko">
|
||||
Simulz 스킨입니다.
|
||||
</description>
|
||||
</maker>
|
||||
<colorset>
|
||||
<color name="Box_000">
|
||||
<title xml:lang="ko">기본</title>
|
||||
</color>
|
||||
<color name="Box_001">
|
||||
<title xml:lang="ko">회색</title>
|
||||
</color>
|
||||
<color name="Box_002">
|
||||
<title xml:lang="ko">연두</title>
|
||||
</color>
|
||||
<color name="Box_003">
|
||||
<title xml:lang="ko">분홍</title>
|
||||
</color>
|
||||
<color name="Box_004">
|
||||
<title xml:lang="ko">보라</title>
|
||||
</color>
|
||||
<color name="Box_005">
|
||||
<title xml:lang="ko">밝은 파랑</title>
|
||||
</color>
|
||||
<color name="Box_006">
|
||||
<title xml:lang="ko">청록</title>
|
||||
</color>
|
||||
<color name="Box_007">
|
||||
<title xml:lang="ko">초록</title>
|
||||
</color>
|
||||
<color name="Box_008">
|
||||
<title xml:lang="ko">노랑</title>
|
||||
</color>
|
||||
<color name="Box_009">
|
||||
<title xml:lang="ko">파랑</title>
|
||||
</color>
|
||||
</colorset>
|
||||
</skin>
|
||||
13
widgets/rss_reader/skins/xe_official/css/black.css
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
.rss_reader_black { width:100%; padding-bottom:15px; overflow:hidden; position:relative;}
|
||||
.rss_reader_black h2 { display:block; height:21px; padding:9px 0 0 9px; margin-bottom:12px; color:#ffffff; background:url(../images/black/lineNotice.gif) no-repeat left bottom; font-size:1em;}
|
||||
.rss_reader_black h2 a { text-decoration:none; color:#ffffff;}
|
||||
.rss_reader_black h2 a:hover { text-decoration:underline;}
|
||||
|
||||
.rss_reader_black ul li { height:20px; background:url(../images/black/bulletD0.gif) no-repeat left 5px; padding-left:10px; overflow:hidden; list-style:none; white-space:nowrap;}
|
||||
|
||||
.rss_reader_black ul li .title a { color:#818181; text-decoration:none; }
|
||||
.rss_reader_black ul li .title a:hover { text-decoration:underline; }
|
||||
.rss_reader_black ul li .title span.comment { color:#FE6700; font:.8em Tahoma; }
|
||||
.rss_reader_black ul li .title span.comment a { color:#FE6700; font:.8em Tahoma; }
|
||||
|
||||
.rss_reader_black ul li .date { color:#999999; font:.8em Tahoma; white-space:nowrap; margin-right:5px;}
|
||||
13
widgets/rss_reader/skins/xe_official/css/white.css
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
.rss_reader_white { width:100%; padding-bottom:15px; overflow:hidden; position:relative;}
|
||||
.rss_reader_white h2 { display:block; height:21px; padding:9px 0 0 9px; margin-bottom:12px; color:#000000; background:url(../images/white/lineNotice.gif) no-repeat left bottom; font-size:1em;}
|
||||
.rss_reader_white h2 a { text-decoration:none; color:#000000;}
|
||||
.rss_reader_white h2 a:hover { text-decoration:underline;}
|
||||
|
||||
.rss_reader_white ul li { height:20px; background:url(../images/white/bulletD0.gif) no-repeat left 5px; padding-left:10px; overflow:hidden; list-style:none; white-space:nowrap;}
|
||||
|
||||
.rss_reader_white ul li .title a { color:#555555; text-decoration:none; }
|
||||
.rss_reader_white ul li .title a:hover { text-decoration:underline; }
|
||||
.rss_reader_white ul li .title span.comment { color:#FE6700; font:.8em Tahoma; }
|
||||
.rss_reader_white ul li .title span.comment a { color:#FE6700; font:.8em Tahoma; }
|
||||
|
||||
.rss_reader_white ul li .date { color:#999999; font:.8em Tahoma; white-space:nowrap; margin-right:5px;}
|
||||
BIN
widgets/rss_reader/skins/xe_official/images/black/bulletD0.gif
Normal file
|
After Width: | Height: | Size: 44 B |
BIN
widgets/rss_reader/skins/xe_official/images/black/lineNotice.gif
Normal file
|
After Width: | Height: | Size: 139 B |
BIN
widgets/rss_reader/skins/xe_official/images/white/bulletD0.gif
Normal file
|
After Width: | Height: | Size: 44 B |
BIN
widgets/rss_reader/skins/xe_official/images/white/lineNotice.gif
Normal file
|
After Width: | Height: | Size: 139 B |
22
widgets/rss_reader/skins/xe_official/list.html
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
<!-- 설정된 컬러셋의 종류에 따라서 css파일을 import 합니다 -->
|
||||
|
||||
<!--@if($colorset=="black")-->
|
||||
<!--%import("css/black.css")-->
|
||||
<!--@else-->
|
||||
<!--%import("css/white.css")-->
|
||||
<!--@end-->
|
||||
<div class="rss_reader_{$colorset}">
|
||||
<!--@if($widget_info->title)-->
|
||||
<h2 title="{date('Y-m-d H:i:s')}">{$widget_info->title}</h2>
|
||||
<!--@else-->
|
||||
<h2 title="{date('Y-m-d H:i:s')}"><a href="{$widget_info->rss->link}" onclick="window.open(this.href);return false">{$widget_info->rss->title}</a></h2>
|
||||
<!--@end-->
|
||||
<ul>
|
||||
<!--@foreach($widget_info->rss_list as $key => $item)-->
|
||||
<li>
|
||||
<span class="date">{$item->date}</span>
|
||||
<span class="title"><a href="{$item->link}" onclick="window.open(this.href);return false">{$item->title}</a></span>
|
||||
</li>
|
||||
<!--@end-->
|
||||
</ul>
|
||||
</div>
|
||||
51
widgets/rss_reader/skins/xe_official/skin.xml
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<skin>
|
||||
<title xml:lang="ko">XE 최신글 스킨 (목록형)</title>
|
||||
<title xml:lang="jp">XEデフォルトレイアウト用の最新コンテンツ表示スキン</title>
|
||||
<title xml:lang="zh-CN">XE 官方网站主题列表</title>
|
||||
<title xml:lang="en">XE Official Layout's newest document skin</title>
|
||||
<maker email_address="zero@zeroboard.com" link="http://www.zeroboard.com" date="2007. 8. 1">
|
||||
<name xml:lang="ko">제로</name>
|
||||
<name xml:lang="jp">zero</name>
|
||||
<name xml:lang="zh-CN">zero</name>
|
||||
<name xml:lang="en">zero</name>
|
||||
<description xml:lang="ko">
|
||||
XE 공식 레이아웃에 적합한 최신글 스킨입니다.
|
||||
디자인 : 이소라 (http://ra-ra.pe.kr)
|
||||
퍼블리싱 : 정찬명 (http://naradesign.net)
|
||||
레이아웃 제작 : zero (http://blog.nzeo.com)
|
||||
</description>
|
||||
<description xml:lang="jp">
|
||||
XEデフォルトレイアウトに最も適した最新コンテンツ表示用のスキンです。
|
||||
デザイン:イソラ(http://ra-ra.pe.kr)
|
||||
パブリシング:ジョンチャンミョン(http://naradesign.net)
|
||||
レイアウト作成:Zero (http://blog.nzeo.com)
|
||||
</description>
|
||||
<description xml:lang="zh-CN">
|
||||
适合XE 官方网站的主题列表。
|
||||
设计 : So-Ra Lee(http://ra-ra.pe.kr)
|
||||
HTML/CSS : Chan-Myung Jeong(http://naradesign.net)
|
||||
布局: zero (http://blog.nzeo.com)
|
||||
</description>
|
||||
<description xml:lang="en">
|
||||
It is a skin suitable for the XE official layout.
|
||||
Design : So-Ra Lee (http://ra-ra-.pe.kr)
|
||||
HTML/CSS : Chan-Myung Jeong(http://naradesign.net)
|
||||
Layout : zero (http://blog.nzeo.com)
|
||||
</description>
|
||||
</maker>
|
||||
<colorset>
|
||||
<color name="white">
|
||||
<title xml:lang="ko">흰색 바탕용</title>
|
||||
<title xml:lang="jp">白い背景</title>
|
||||
<title xml:lang="zh-CN">白色背景</title>
|
||||
<title xml:lang="en">White Background</title>
|
||||
</color>
|
||||
<color name="black">
|
||||
<title xml:lang="ko">어두운 바탕용</title>
|
||||
<title xml:lang="jp">暗い背景</title>
|
||||
<title xml:lang="zh-CN">暗色背景</title>
|
||||
<title xml:lang="en">Dark Background</title>
|
||||
</color>
|
||||
</colorset>
|
||||
</skin>
|
||||
12
widgets/rss_reader/skins/xe_select/css/select.css
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
.tab_menu_latest_select { width:100%; padding-bottom:15px; overflow:hidden; position:relative;}
|
||||
.tab_menu_latest_select h2 { display:block; height:21px; padding:9px 0 0 9px; margin-bottom:12px; color:#000000; background:url(../images/black/lineNotice.gif) no-repeat left bottom; font-size:1em;}
|
||||
.tab_menu_latest_select h2 a,
|
||||
.tab_menu_latest_select .tabcontent_rss a { text-decoration:none; color:#000000;}
|
||||
.tab_menu_latest_select h2 a:hover,
|
||||
.tab_menu_latest_select .tabcontent_rss a:hover { text-decoration:underline;}
|
||||
|
||||
.tab_menu_latest_select .tabcontentcontainer {width:100%;}
|
||||
|
||||
.tab_menu_latest_select .tabcontent_rss {display:none;width:100%; color:#555555;}
|
||||
|
||||
.tab_menu_latest_select .date { color:#999999; font:.9em Tahoma; white-space:nowrap; margin-right:5px;}
|
||||
BIN
widgets/rss_reader/skins/xe_select/images/black/bulletD0.gif
Normal file
|
After Width: | Height: | Size: 44 B |
BIN
widgets/rss_reader/skins/xe_select/images/black/lineNotice.gif
Normal file
|
After Width: | Height: | Size: 139 B |
BIN
widgets/rss_reader/skins/xe_select/images/forward.png
Normal file
|
After Width: | Height: | Size: 3.6 KiB |
BIN
widgets/rss_reader/skins/xe_select/images/new.gif
Normal file
|
After Width: | Height: | Size: 78 B |
BIN
widgets/rss_reader/skins/xe_select/images/white/bulletD0.gif
Normal file
|
After Width: | Height: | Size: 44 B |
BIN
widgets/rss_reader/skins/xe_select/images/white/lineNotice.gif
Normal file
|
After Width: | Height: | Size: 139 B |
17
widgets/rss_reader/skins/xe_select/js/tab.js
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
function tab_menu_select(tab_id, tabs, t, tab_obj){
|
||||
for(var i = 1; i <= tabs; i++) {
|
||||
eval("document.getElementById('tab"+tab_id+i+"')").style.display="none";
|
||||
if ( t == i ) {
|
||||
eval("document.getElementById('tab"+tab_id+i+"')").style.display="block";
|
||||
}
|
||||
}
|
||||
tab_obj.className="current"
|
||||
}
|
||||
|
||||
/* 높이 조절 */
|
||||
function resize_rss_tabcontent(tab_id, ms_height) {
|
||||
var obj = xGetElementById(tab_id)
|
||||
|
||||
if(xHeight(obj) > ms_height) obj.style.height = ms_height + 'px'
|
||||
obj.style.overflow = "auto"
|
||||
}
|
||||
34
widgets/rss_reader/skins/xe_select/list.html
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
<!--%import("css/select.css")-->
|
||||
<!--%import("js/tab.js")-->
|
||||
{@ $tab_id = mt_rand()}
|
||||
<div class="tab_menu_latest_{$colorset}">
|
||||
<!--@if($widget_info->title)-->
|
||||
<h2 title="{date('Y-m-d H:i:s')}">{$widget_info->title}</h2>
|
||||
<!--@else-->
|
||||
<h2 title="{date('Y-m-d H:i:s')}"><a href="{$widget_info->rss->link}" onclick="window.open(this.href);return false">{$widget_info->rss->title}</a></h2>
|
||||
<!--@end-->
|
||||
<table>
|
||||
<tr><td>
|
||||
<div id="tablist">
|
||||
{@$i=1}
|
||||
<select onchange="tab_menu_select({$tab_id}, {count($widget_info->rss_list)}, this.value, this);resize_rss_tabcontent('tab{$tab_id}',{$widget_info->rss_height})">
|
||||
<!--@foreach($widget_info->rss_list as $key => $item)-->
|
||||
<option value="{$i}">{$item->title}</option>
|
||||
{@$i++}
|
||||
<!--@end-->
|
||||
</select>
|
||||
</div>
|
||||
</td></tr>
|
||||
</table>
|
||||
|
||||
{@$i=1}
|
||||
<DIV id="tab{$tab_id}" class="tabcontentcontainer">
|
||||
<!--@foreach($widget_info->rss_list as $key => $item)-->
|
||||
<div id="tab{$tab_id.$i}" class="tabcontent_rss" style="height:{$widget_info->rss_height}px;overflow:auto;<!--@if($i==1)-->display:block;<!--@end-->">
|
||||
<div class="date">{$item->date} | {$item->author} <a href="{$item->link}" onclick="window.open(this.href);return false"><img src="./images/forward.png" align="absmiddle" class="iePngFix"></a></div>
|
||||
{$item->description}
|
||||
</div>
|
||||
{@$i++}
|
||||
<!--@end-->
|
||||
</DIV>
|
||||
</div>
|
||||
15
widgets/rss_reader/skins/xe_select/skin.xml
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<skin>
|
||||
<title xml:lang="ko">XE 최신글 스킨 (Select 메뉴)</title>
|
||||
<maker email_address="simulz@simulz.com" link="http://php.simulz.com" date="2007. 11. 5">
|
||||
<name xml:lang="ko">Simulz</name>
|
||||
<description xml:lang="ko">
|
||||
XE 공식 레이아웃에 적합한 최신글 스킨입니다.
|
||||
</description>
|
||||
</maker>
|
||||
<colorset>
|
||||
<color name="select">
|
||||
<title xml:lang="ko">Select</title>
|
||||
</color>
|
||||
</colorset>
|
||||
</skin>
|
||||