Post list


2012-09-23

4차수정] G1님 글 원본에 원코드의 이부분 빼지않고 나두면>>> //제목만 a.innerHTML = obj.escapeHtml(z.feed.entry[i].title.$t); //시간.


<style>
    #posts{padding: 10px;}
    .g1sPostsPost{clear: both;}
    .g1sPostsTitle{}
    .g1sPostsTag{float:left;}
    .g1sPostsRight{float:right; text-align:right; width:99%;}
</style>


<div>

<div id="posts" style="padding: 10px;">

</div>

<div align="center" id="posts-pgno" style="cursor: pointer;">

</div>

</div>

<script language="Javascript" type="text/javascript">

/** url의 Parameter를 얻는 Class. **/

var request = {

parameter: function(name) {

return this.parameters()[name];

},



parameters: function() {

var result = {};

var url = window.location.href;

var parameters = url.slice(url.indexOf('?') + 1).split('&');



for(var i = 0; i < parameters.length; i++) {

var parameter = parameters[i].split('=');

result[parameter[0]] = parameter[1];

}

return result;

}

}



/** Page의 정보를 저장. **/

var page = {

//초기화.

init: function(home,max){

page.home = home;

page.max = max;

page.label = '';

page.no = 1;

},



//url의 parameter에서 pgno 값을 읽어 옮.

setPage: function(){

var url = window.location.href;



var pl = url.lastIndexOf("/label/");

var pq = url.lastIndexOf("?");



if(pl != -1)

page.label = url.substr(pl+7,((pq!=-1)?pq:url.length)-(pl+7));



if(url.indexOf("pgno") != -1)

page.no = request.parameter("pgno");



}



}

/** feed를 parsing 하여 결과 뿌려 줌. **/

var obj = {

init: function () {

obj.obj = document.getElementById('posts');

obj.pgno = document.getElementById('posts-pgno');

},



// 검색을 요청하는 함수

pingSearch: function () {

//변수 선언.

obj.s = document.createElement('script');

obj.s.type = 'text/javascript';

obj.s.charset = 'utf-8';



//feed callback 함수를 이용 json 객체 구한 후 pongSearch 함수호출.

if(page.label == '')

obj.s.src = '' + page.home +

'/feeds/posts/summary/?max-results='+(page.no*page.max)

+'&alt=json-in-script&callback=obj.pongSearch';

else

obj.s.src = '' + page.home + '/feeds/posts/summary/-/'

+page.label+'?max-results='+(page.no*page.max)

+'&alt=json-in-script&callback=obj.pongSearch';



//append.

document.getElementsByTagName('head')[0].appendChild(obj.s);

},



// 검색 결과를 뿌리는 함수

pongSearch: function (z) {
obj.obj.innerHTML = '';

/* 글 목록을 뿌려 줌. */
for (var i = (page.no-1)*page.max; i < page.no*page.max; i++) {
if(i >= z.feed.openSearch$totalResults.$t)
break;

//변수선언

var li = document.createElement("li");
var div = document.createElement('div');
var a1 = document.createElement('a');
var a2 = document.createElement('a');


//link로 사용할 base url.

var url = page.home + '/search';
if(page.label != '')
url += '/label/' + page.label;


//최종 link를 url 입력

if (i == 0){
a1.href = url + '?max-results=1';
a2.href = url + '?max-results=1';
}else{
var published = obj.changeTime(z.feed.entry[i - 1].published.$t);
a1.href = url + '?updated-max=' + published + '&max-results=1&pgno='+page.no;
a2.href = url + '?updated-max=' + published + '&max-results=1&pgno='+page.no;
}

//제목만 a.innerHTML = obj.escapeHtml(z.feed.entry[i].title.$t);

//시간

var ldiv = document.createElement('div');
var published = z.feed.entry[i].published.$t;
var y,mm,d,h,m,s;
y = 1 * published.substr(0,4);
mm = 1 * published.substr(5,2);
d = 1 * published.substr(8,2);
h = 1 * published.substr(11,2);
m = 1 * published.substr(14,2);
s = 1 * published.substr(17,2);
var date = new Date(y, mm, d, h, m, s);
var dt;
if(published.charAt('+'))
dt = (parseInt(published.substr(25,2)) * 60 + parseInt(published.substr(28,2)))*60000;
else
dt = (-parseInt(published.substr(25,2)) * 60 - parseInt(published.substr(28,2)))*60000;
var rdate = new Date(date.getTime() + dt);
a1.innerHTML = obj.escapeHtml(rdate.getFullYear() +"."+ rdate.getMonth() +"."+ rdate.getDate() +". "+ rdate.getHours() +":"+ rdate.getMinutes() +":"+ ((rdate.getSeconds()<10)?"0"+rdate.getSeconds():rdate.getSeconds()));

//제목

var rdiv = document.createElement('div');
div.className = "g1sPostsPost";
ldiv.className = "g1sPostsLeft";
rdiv.className = "g1sPostsRight";
a2.className = 'g1sPostsTitle';
a2.innerHTML = obj.escapeHtml(z.feed.entry[i].title.$t);
if(a2.innerHTML.length > 100)
a2.innerHTML = a2.innerHTML.substr(0,100) + '...';
ldiv.appendChild(a2);

//라벨

for(var j in z.feed.entry[i].category){
var a3 = document.createElement('a');
a3.className = 'g1sPostsTag';
a3.style.color = 'green';
a3.href = page.home + '/search/label/' + z.feed.entry[i].category[j].term + '?max-results=1';
a3.innerHTML = obj.escapeHtml('['+z.feed.entry[i].category[j].term+']');
rdiv.appendChild(a3);
}
rdiv.appendChild(a1);
div.appendChild(ldiv);
div.appendChild(rdiv);
li.appendChild(div);
obj.obj.appendChild(li);
}

/* page 뿌려줌. */
obj.pongPgno(z);
},



// page를 뿌려주는 함수.

pongPgno: function(z){

obj.pgno.innerHTML = '';

var before = document.createElement('a');

var next = document.createElement('a');



var ten = parseInt((page.no-1)/10);

var total = z.feed.openSearch$totalResults.$t;



/* before page */

before.innerHTML = ' << ';

if(ten>0)

obj.onMouseDown(before, ten*10);

obj.pgno.appendChild(before);



/* page number */

for(var i=ten*10; i< (ten+1)*10; i++){

if(i >= total/page.max)

break;

var a = document.createElement('a');

obj.onMouseDown(a,i+1);



a.innerHTML = ' ' + (i+1) + ' ';



if(i+1 == page.no)

a.style.color = 'yellow';

obj.pgno.appendChild(a);

}



/* next page */

next.innerHTML = ' >> ';

if(ten< parseInt(total/page.max/10))

obj.onMouseDown(next, (ten+1)*10+1);

obj.pgno.appendChild(next);

},



//mouse click event.

onMouseDown: function(a, i){

a.onmousedown = function(){

page.no = i;

obj.pingSearch();

}

},



//Time 에러 수정.

changeTime: function(str){

var s = str.lastIndexOf('.')-1;

var e = str.lastIndexOf('+')+1;



if(e<1){

e = str.lastIndexOf('-')+1;

var str2 = str.substr(0,s) + '-' + str.substr(e,100);

}

else{

var str2 = str.substr(0,s) + '%2B' + str.substr(e,100);

}

return str2;

},





// HTML태그 안 먹게 하는 함수

escapeHtml: function (str) {

str = str.replace(/&/g, "&");

str = str.replace(/</g, "<");

str = str.replace(/>/g, ">");

return str;

}

};







page.init('http://hi5656.blogspot.com', 40);

page.setPage();

obj.init();

obj.pingSearch();

</script>

댓글 없음:

댓글 쓰기