Post list


2012-09-15

'Post list'코드, 목록에서 본문 링크 성공!!!(G1님께 감사드림!]

<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 a = document.createElement('a');



//link로 사용할 base url.

var url = page.home + '/search';

if(page.label != '')

url += '/label/' + page.label;



//최종 link를 url 입력.

if (i == 0)

a.href = url + '?max-results=1';

else {

var pub=obj.changeTime(z.feed.entry[i-1].published.$t);

a.href = url + '?updated-max=' + pub

+ '&max-results=1&pgno='+page.no;

}

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



//append

li.appendChild(a);

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>


댓글 없음:

댓글 쓰기