1.1.1

코드 정리

조건문 타입에러 수정

 

기능적으로는 마지막 업데이트이지 않을까 싶습니다

불친절하게도 관리자설정이 따로 없습니다

tpl/index.html에서 터치영역을 직접 입력하여 사용하세요

^^

 

 

1.1.0

이름 변경 (drag_to_change_page -> drag_interaction)

이전글 다음글 이동 기능 추가

toucharea 영역 지정은 필수가 되었습니다. (목록, 문서 영역 각각)

스크롤 시에 드래그이벤트 반응 문제 해결

passive 옵션 사용하여 스크롤 성능 저하 해결

이제 tpl/index.html 파일만 수정해서 쓰시면 됩니다.

여러 환경에서 테스트 해보지 못했기 떄문에 피드백 부탁드려요~!

 

 

1.0.2

스크롤 시 반응성을 조정하였습니다. 

 

 

1.0.1

콜백 함수 사용 가능

기본 너비 60

기본 딜레이 삭제

 

  • profile
    압축을 푸는데 실패를 해서 그런데 zip파일로 압축해주시면 안될까요?
  • profile profile
  • profile profile
    conf 가 없어서 사용 가능한 모듈 선택 저장을 할 수가 없습니다.
  • profile profile
    다시 올렸습니다 conf 폴더를 모르고 포함안했네요 ㅋㅋ
  • profile
    설치해서 적용해보니 멋집니다. 페이지 이동 슬라이드로 하고 싶다는 생각 해왔었는데 멋지게 구현이 되었네요. 페이지 표시되고 로딩이 표현되는 동작이 아주 멋스럽습니다.
  • profile profile
    감사합니다. 잘된다면 다행이네요. 사용해보시고 피드백 부탁드려요~
  • profile profile
    취향 차이일 수 있지만 피드백 드립니다.
    딜레이 시간을 250 으로 주셨는데 개인적으로 이시간이 없는게 더 좋네요. 다음도 스크롤하면서 손을떼면 즉시 이동하는데요. 저희도 이 시간을 없애는게 약간 답답함이 없어졌습니다.
  • profile
    편리한 기능이라 사이트 게시판에 적용하고 회원들께 공지까지 마쳤습니다. 아주 좋습니다!!!
    강력 추천입니다. 손가락 까딱~ 페이지 이동!
  • profile
    복잡한 문제 일 수 도 있는데요.
    글 읽는 화면에서도 제공해 보려고 글읽는 곳 제한 하는 곳을 주석하여 동작시켜 봤습니다.
    그런데 직접 아래 하단의 페이지 번호를 누른 것과 달리 이 애드온에서 이동을 하면 현재 읽고 있는 곳 문서번호를 읽는 화면이 유지되면서 페이지만 변경되어 방금 읽고 있던 문서 화면으로 보여지니 실제 아래 목록의 페이지가 의도햇던 다음 페이지로 이동했는지 인식하기 좀 어려운 점이 있네요.
    혹시 아래 네이게시션에서 눌러 이동했을때와 같은 이동을 연출해 주실 수 있는지 ...
    글 하나 읽고 목록을 검토하다가 현재 페이지에는 더 이상 읽을 것이 없을때 다음 페이지로 이동을 시도하는 패턴이 많아서요.
    쉽게 말씀드리면 게시판 스킨에서 네이게시션 페이지 번호를 눌렀을때랑 같은 주소로 이동이 되게 하면 좋을 것 같습니다.
    - 문서 열람시 문서번호가 있기 때문에 여기서도 스크롤로 이동 기능을 제공하면 편리해서 좋은데 주소방식이 달라져 게시판 스킨에서 페이지번호를 눌렀을때 와 달리 이전 열람하던 문서가 열람되면서 페이지가 이동됩니다.
    - 게시판 스킨의 하단 페이지네이게이션에서 페이지 번호에 마우스를 올려보니 글 열람하고 있는 페이지라 하더라도 이동하는 주소는 현재 게시글 주소를 참조하지 않네요.
  • profile profile
    피드백 반영하여 새버전 업로드하였습니다.
  • profile profile
    와! 감사합니다. 글 열람하면서 목록을 보다가 페이지 이동하는 패턴이 많아서 큰 도움될 것 같습니다!
  • ?
    대박..!
  • ?
    감사합니다.
  • profile
    멋집니다. 다음카페의 그것과 똑같네요. 감사합니다.
  • ?
    감사합니다! 사용해봐야겠어요
  • profile
    와우 감사합니다.
    혹시 이 기능이 글 넘김도 가능할지요..
    열린 글 아래 목록을 보여 주고 있긴 한데..
    글을 보다가 다음 글 이전 글도 드래그(?), 스와이프 해서 넘길 수 았다면 좋을 것 같아서요

    다시 한번 좋은 애드온 감사 드립니다.
  • profile
    어머! 이건 사야해!!
  • ?
    fafazboard.com
    pjaxboard 의 파파즈님
    역시 무얼 만드시든 혁명적이네요
  • ?
    최고입니다
  • profile
    헉스.. 생각보다 많이들 맘에 들어하시네요. 앞으로도 좋은 자료 종종 만들어서 올리도록 하겠습니다. 이 자료 피드백도 많이 남겨주세요~
  • profile
    얼릉 포인트 모아서 구매해야 겠네요
  • ?
    오호라..대단하네요.
  • ?
    감사합니다!
  • ?
    잘 사용하겠습니다. 새해 복 많으 받으세요 ^^
  • profile
    본문에서 드래그하면 이전글 다음글 이동도 괜찮을 거 같아요~
  • ?
    정말 감사합니다! 대박이네요..ㅎ
  • profile
    감사합니다.
  • ?
    멋진 애드온 잘 사용하고 있습니다.
    감사합니다...

    1.0.2버전 스크롤 시 반응성을 조정하셨다는데
    아직도 스크롤시 이전 페이지로 넘어가 버리는 경우가 종종 생깁니다.
    그래서인데 반응성부분을 조정할려면 어디를 수정해야 하나요?
  • profile
    와 이런 좋은 기능을..감사합니다^^
  • profile
    다음글 이전글 피드백 드립니다.
    다음글이 현재 게시판의 다음글이 아닌 다른 게시판의 글로 이동되는 문제가 있습니다.
    이전글은 작동이 안하고 다음글만 잘동합니다. 다음글은 위와 같은 문제가 있구요.
    쿼리가 잘못된 듯 합니다.
  • profile profile
    moduleinfo의 modulesrl값으로 구하는건데 다른 게시판으로 이동하는 이유는 모르겠네요. 일단 제가 오늘은 밤에나 작업할 수 있어서.

    제일 좋은 것은 index.html에서 php인클루드를 주석하고 prev_document_srl 과 next_document_srl 변수 부분에 게시판 스킨 내에서 미리 불러온 값을 입력해주는 방법입니다.
  • profile profile
    그리고 추가고 @윤삼님께서 문의하신 본문내 특정 엘리먼트를 제외하고 싶은데 이 경우 어떻게 해야할지 궁금합니다.(사이틀에 따라서 1개가 아닌 여러개의 엘리먼트를 지정해야 할 수 있습니다.)
    본문 영역내에서 스와이프로 리스트를 봐야 하는 것들이 잇어서요.
  • profile profile
    스킨에서의 방식과 완전히 달라서 스킨의 것을 적용하긴 어렵겠네요. 고쳐지면 해당 기능은 이용해야 할 것 같습니다.
  • profile profile
    모니터링 해 보니
    아마도 게시글에서 스와이프 하면 해당 작성자의 다른 게시글로 이동하는 듯 합니다. 모듈번호와 관계없이요...
  • profile profile
    해당 이벤트의 핸들러 내에서 e.stopPropagation() 을 실행하는게 가장 좋습니다.
  • profile profile
    <a href="{getUrl('document_srl', $어쩌구저쩌구...')}>이전글</a>
    이런 식으로 등록 되어있으시면 $어쩌구저쩌구 <-- 부분을 복사하셔서
    index.html 내의 $prev_document_srl = $어쩌구저쩌구;
    이렇게 넣어주시면 될겁니다.
  • profile profile
    그게 사용이 안됩니다 ㅋㅋ 이전글, 다음글 링크 방식이 달라요 ㅋㅋ
  • profile profile
    어떻게 되있으신데요? 제가 알려드릴게요
  • profile profile
    <!--//
    Source form : https://xe1.xpressengine.com/21617245 & sketchbook5 http://xe.sketchbooks.co.kr/
    -->
    <block loop="$document_list=>$no,$document" cond="$document_srl==$document->document_srl">
    <!--// prev-next page -->
    <block cond="!$search_keyword">
    <block cond="(!$document_list[$no+1]->document_srl && $page!=1) || (!$document_list[$no-1]->document_srl && $page!=$total_page)">
    {@
    $oModuleModel = getModel('module');
    $module_srl_temp = $oModuleModel->getModuleSrlByMid($mid);
    if(is_array($module_srl_temp)) $module_srl = $module_srl_temp[0];
    else $module_srl = $module_srl_temp;
    $args = new stdClass();
    $args->module_srl = $module_srl;
    $args->category_srl = $category;
    $args->list_count = $module_info->list_count;
    $args->sort_index = $module_info->order_target;
    if($sort_index) $args->sort_index = $sort_index;
    $args->order_type = $module_info->order_type;
    if($sort_index) $args->order_type = $order_type;
    if($module_info->except_notice=='Y') $prevnext_except_notice=1;
    }
    <!--@if(!$document_list[$no+1]->document_srl && $page!=1)-->
    {@
    $is_prevnext='P';
    $args->page = $page-1;
    $prevnext_list = executeQueryArray('document.getDocumentList',$args);
    $prevnext_data = array_reverse($prevnext_list->data);
    }
    <!--@else if(!$document_list[$no-1]->document_srl && $page!=$total_page)-->
    {@
    $is_prevnext='N';
    $args->page = $page+1;
    $prevnext_list = executeQueryArray('document.getDocumentList',$args);
    $prevnext_data = $prevnext_list->data;
    }
    <!--@end-->
    <!--@foreach($prevnext_data as $no2 => $document2)-->
    <block cond="!$prevnext_except_notice || ($prevnext_except_notice && $document2->is_notice!='Y')">
    {@
    $prevnext_doc = $document2->document_srl;
    $prevnext_title = $document2->title;
    $prevnext_date = $document2->regdate;
    $prevnext_nick = $document2->nick_name;
    $prevnext_comment = $document2->comment_count;
    break;
    }
    </block>
    <!--@end-->
    </block>
    </block>
    <ul class="read-more" cond="$mi->use_more == 'Y'">
    <block loop="$document_list=>$no,$document" cond="$document_srl==$document->document_srl">
    <li cond="$document_list[$no+1]->document_srl"><a href="{getUrl('document_srl',$document_list[$no+1]->document_srl)}"><span class="prev">이전글</span> {$document_list[$no+1]->getTitle(34)} <span class="thumbUpNum" cond="$document_list[$no+1]->getCommentCount()">[{$document_list[$no+1]->getCommentCount()}]</span></a></li>

    <block cond="$is_prevnext">
    <!--@if($is_prevnext=='P')-->
    <li><a href="{getUrl('document_srl',$prevnext_doc,'page','','cpage','')}"><span class="prev">이전글</span> {$prevnext_title} <span class="thumbUpNum" cond="$prevnext_comment">[{$prevnext_comment}]</span> </a></li>
    <!--@else-->
    <li><a href="{getUrl('document_srl',$prevnext_doc,'page','','cpage','')}"><span class="next">다음글</span> {$prevnext_title} <span class="thumbUpNum" cond="$prevnext_comment">[{$prevnext_comment}]</span> </a></li>
    <!--@end-->
    </block>

    <li cond="$document_list[$no-1]->document_srl"><a href="{getUrl('document_srl',$document_list[$no-1]->document_srl)}"><span class="next">다음글</span> {$document_list[$no-1]->getTitle(34)} <span class="thumbUpNum" cond="$document_list[$no-1]->getCommentCount()">[{$document_list[$no-1]->getCommentCount()}]</span></a></li>
    </block>
    </ul>
    {@ break;}
    </block>
  • profile profile
    눈이 침침해서 아무리 봐도 안읽히네요 ;;
    그냥 제가 만든 코드에 문제가 있는지 보곘습니다. ㅜㅋ
  • profile profile
    스케치북에서 좌우 키에 매핑을 이렇게 했네요.

    // Prev-Next
    function bdPrevNext(bd){
    jQuery(document).keydown(function(event){
    var eT = event.target.nodeName.toLowerCase();
    if(eT=='textarea' || eT=='input' || eT=='select') return true;
    var p = bd.find('.bd_rd_prev');
    var n = bd.find('.bd_rd_next');
    // fixed for 'prettyphoto' addon
    if(!jQuery('div.pp_overlay').length){
    if(event.keyCode==37 && p.length){
    window.location.href = p.attr('href');
    } else if(event.keyCode==39 && n.length){
    window.location.href = n.attr('href');
    } else if(event.keyCode==27 && jQuery('#viewer').length){
    self.close();
    } else {
    return true;
    };
    };
    });
    }


    prev next 가 변수를 가지는게 아니고 해당 링크버튼에 각 조건에 맞게 링크가 생기고 또 없기도 하고 하는 상황이라 스크립트에서 해당 위치의 값을 빼와 키에 매핑을 한 듯 합니다.
    해당키가 눌리고 해당 자리에 링크가 있을때 동작하게 되는 듯 하구요.
  • profile profile
    이건 그냥 키보드를 눌러서 이동하는 이벤트가 등록된거네용.. 그 url은 역시 템플릿 파일에서 a 태그를 찾아서 href 속성 값을 불러오는 방식입니다.
  • profile profile
    네. 제가 이 걸 댓글로 달아드린 이유는
    템플릿에 pre , next 값이 변수로 가진게 아니고 그 안에 url을 조건에 따라 교체해서 넣기 때문에 템플릿에서 그부분에 담긴 상태를 가져와 이동한다는 것을 설명드리기 위해서 입니다.
    처음에 제안하셨던 스킨에서 가져온 값을 적용하기 어렵다는 의미에요.
    - 저희 모바일 스킨도 이 코드를 거의 그대로 가져다 쓰고 템플릿에서 약간의 변화만 있는 상태라서요.

    제가 저것처럼 애드온에 적용하고 싶지만 그것은 저는 할수 없어서요.
  • profile profile
    코드를 좀 정리해서 다시 올렸습니다. 테스트 환경에서는 딱히 문제없이 잘되긴 하는데..
    한번 새버전으로 다시 설치해보세요
  • profile profile
    아래 댓글로 이미 ㅜㅡ
  • profile
    좋은 애드온 감사합니다. 1.1 테스트 해보니(Rhymix, php7.0) 본문에선 잘 동작합니다. 그런데 리스트에서 1페이지에서 2페이지 갔다가 1페이지로 온 후 LEFT_TO_RIGHT 하면 0P가 나오고 last_page에서 RIGHT_TO_LEFT하면 last_page+1P 가 나옵니다.
    그래서 _list.html에서 아래와 같이 수정하니 정상적으로 동작합니다.
    prev: {
    isExist: {$page > 1 ? 1 : 0}, //기존 {$page !== 1 ? 1 : 0},
    value: '{$page-1}P',
    },
    next: {
    isExist: {$page < $page_navigation->last_page ? 1 : 0}, //기존 {$page !== $page_navigation->last_page ? 1 : -1},
    value: '{$page+1}P',
    },
  • profile profile
    음.. 그렇군요 확인해보곘습니다. 감사드려요
  • ?
    감사합니다!
  • profile
    1.1.1 업데이트 했는데도 동일한 현상이 있습니다.

    현재 게시판 1곳만 지정해서 동작시켜 놓았구요.
    문서에 들어가서 스와이프하면 다음 글로 넘어가는데 그 곳이 현재 머물고 있는 게시판 여부와 관계없이 글 작성자의 다른 최신글로 이동합니다.
  • profile
    저희는 글읽는 화면에 위젯으로
    글 작성자의 다른글 보기를 목록으로 제공하고 있습니다. 이점이 연관성이 있을 수도 있어 댓글 달아드립니다.
    같은 화면에서 여러 쿼리가 함께 섞이면서 발생하는 문제 아닐까 해서요.
  • profile
    이게 현재 글 작성자 글 보기 위젯의 쿼리 입니다.

    <query id="getDocumentList" action="select">
    <tables>
    <table name="documents" />
    <table name="modules" />
    </tables>
    <columns>
    <column name="documents.*" />
    </columns>
    <conditions>
    <condition operation="equal" column="documents.member_srl" var="member_srl" filter="number" notnull="notnull" />
    <condition operation="equal" column="documents.module_srl" var="module_srl" filter="number" pipe="and" />
    <condition operation="notin" column="documents.module_srl" var="no_module_srl" filter="number" pipe="and" />
    <condition operation="notin" column="documents.document_srl" var="no_document_srl" filter="number" pipe="and" />
    <condition operation="more" column="documents.regdate" var="regdate" filter="number" pipe="and" />
    <condition operation="in" column="documents.status" var="statusList" pipe="and" />
    <condition operation="equal" column="documents.module_srl" default="modules.module_srl" pipe="and" />
    <condition operation="notequal" column="modules.module" default="page" pipe="and" />
    <group pipe="and">
    <condition operation="more" column="documents.readed_count" var="readed_count" pipe="and" />
    <condition operation="more" column="documents.voted_count" var="voted_count" pipe="and" />
    </group>
    <group pipe="and">
    <condition operation="more" column="documents.readed_count" var="readed_count_or" pipe="or" />
    <condition operation="more" column="documents.voted_count" var="voted_count_or" pipe="or" />
    </group>
    </conditions>
    <navigation>
    <index var="sort_index" default="documents.regdate" order="desc" />
    <list_count var="list_count" default="7" />
    </navigation>
    </query>


    위 쿼리의 결과가 글 읽는 화면에서 뿌려지고 있습니다.
  • profile profile
    흠.. 글쎼요. 제가 쓴 코드는 쿼리를 직접 호출하는 형태가 아니고 document 모델의 getDocumentList함수를 통해 호출하는거라.. 그 부분이 충돌한다고 보기는 어렵긴한데,,

    혹시 말씀하신 위젯에서 document_list 변수에 다른 값을 덮어씌웠다거나 그런 케이스일 가능성이 있는 것 같습니다.
  • profile
    정 안되면 지금 스킨에서 가져온 것에 변수를 부여하는 방법도 고민해봐야 할 것 같네요.
  • profile
    무식한 방법이지만 가장 확실한 스킨에서 미리 구한 것을 애드온에 사용할 수 있도록 변수를 만들어 끼워 넣었습니다.
    <block loop="$document_list=>$no,$document" cond="$document_srl==$document->document_srl">
    <li cond="$document_list[$no+1]->document_srl"><a href="{getUrl('document_srl',$document_list[$no+1]->document_srl)}"><span class="prev">이전글</span> {$document_list[$no+1]->getTitle(34)} <span class="thumbUpNum" cond="$document_list[$no+1]->getCommentCount()">[{$document_list[$no+1]->getCommentCount()}]</span></a>{@ $prevSrl = $document_list[$no+1]->document_srl}</li>
    <block cond="$is_prevnext">
    <!--@if($is_prevnext=='P')-->
    {@ $prevSrl = $prevnext_doc}
    <li><a href="{getUrl('document_srl',$prevnext_doc,'page','','cpage','')}"><span class="prev">이전글</span> {$prevnext_title} <span class="thumbUpNum" cond="$prevnext_comment">[{$prevnext_comment}]</span> </a></li>
    <!--@else-->
    {@ $nextSrl = $prevnext_doc}
    <li><a href="{getUrl('document_srl',$prevnext_doc,'page','','cpage','')}"><span class="next">다음글</span> {$prevnext_title} <span class="thumbUpNum" cond="$prevnext_comment">[{$prevnext_comment}]</span> </a></li>
    <!--@end-->
    </block>
    <li cond="$document_list[$no-1]->document_srl"><a href="{getUrl('document_srl',$document_list[$no-1]->document_srl)}"><span class="next">다음글</span> {$document_list[$no-1]->getTitle(34)} <span class="thumbUpNum" cond="$document_list[$no-1]->getCommentCount()">[{$document_list[$no-1]->getCommentCount()}]</span></a>{@ $nextSrl = $document_list[$no-1]->document_srl}</li>
    </block>
    일단 잘 되네요!
  • profile profile
    쓰던걸 다시 쓰는게 가장 좋긴하죠
    _document.html 에 있는 코드도 지워주셔요
  • profile profile
    네, 당연히 그 코드는 지웠구요. 엇.. 뭔가 이상하게 이동하네요. 같은 게시판으로 이동하긴 하는데 뭔가 꼬였는지 더 들여다 봐야겠습니다.
  • profile profile
    복붙 하면서 마지막에는 - 를 해야 하는데 위에것 복사해서 그대로 + 가 붙어서 그런거네요 ㅋ
    잘됩니다!!
    이 생각을 왜 못했을까요 ㅋㅋㅋ
  • profile profile
    고생하셨습니다 ^^ 그럼 잘 사용해주세요
  • profile
    감사히 잘 쓰겠습니다.
    고맙습니다 ^^
  • profile
    사용중에 아주 중요한 문제점이 발견되었습니다.
    목록 중 게시글 선택 시 선택한 목록에 음영이 표시되는 것이 동작하지 않게 되어 잘 터치한건지 실제 게시글로 이동하기 전까지ㅜ확인이 안되는 문자점 입니다. 터치 반응성 조절을 위해 추가된 것 때문에 발생한 현상이 아닌가 추측이됩니다.
  • profile
    혹시나 해서 js 파일에서 확인해 보니
    -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
    로 안보이게 처리한게 있네요. 제거하니 이제 잘 보입니다. 이게 안보이면 절 선택된건지 확인이 안될때가 있어 보이게 하는게좋아보입니다.
    저희집 네트워크가 자주 불안할 때가 많은데 잘 안눌린지 알고 계속 누르는 경우가 생기더라구요.
  • profile profile
    오.. 그렇군요. 다음 버전에서는 제거하도록 하겠습니다.
  • profile
    고맙습니다. 잘 사용해보겠습니다!
  • profile
    아주 좋은 애드온입니다
  • profile
    감사합니다!
  • ?
    정말 훌륭한 애드온 감사히 잘 쓰고 있습니다. 다른 게시판에선 아무 문제 없는데 타임라인 게시판에서 두번 째 페이지 부터 문제가 생깁니다. 첫번 째에서 두번째 글로 이동할 때쯤 페이지 1에 있는 두번 째 게시물로 돌아가네요. 타임라인이 원래 글이 존재하지 않는 게시판이고 이런 저런 문제가 있는 건 알지만 이 애드온이 글을 모아 보는 게시판에서 더욱 진가를 발휘될 수 있을텐데 말이죠. ^^
    페이지 이동은 문제가 없는데 본문글 이동만 문제입니다.
  • ? profile
    타임라인 게시판 자체가 문서를 가지고 있지 않기 때문에 페이지가 변경되는 상황에서 다음글이나 이전글은 불가능할 것 같습니다. 타임라인 모듈에서는 처리가 가능하지만요.
    저희는 타임라인 모듈에서는 해당 상황에서 페이지가 이동되도록 오늘 고쳤네요.
  • profile ?
    저희는 본문 영역에서의 사용은 잠시 보류하기로 했습니다. 사용하다 보니 핀치 줌 기능에 영향을 주더라구요. 제가 요즘 살짝 노안이 오는 지라 핀치 줌 기능이 더욱 중요하다 판단되어 일단 보류했습니다. 후에 본문에서도 게시판 페이지 하단 페이지 이동 처럼 특정 영역을 지정해서 그 부분에만 적용하든지 해야겠습니다.
  • profile
    감사히 사용중에 있습니다.
  • ?
    다시 배포하실 의향은 없으신가요?? 꼭 필요한 자료인데 아쉽습니다 ㅠ
  • profile
    이거정말 가지고싶네요.ㅠㅠ
  • profile
    재판매좀 부탁드려요 ㅠㅠ
  • profile profile
    어? 저는 다운로드가 되는데요? 왜 되죠? ㄷㄷ
  • profile profile
    아, 콘텐츠를 구매했었던 사람들만 다운로드가 가능한가보네요.
    판매기간이 지난 다른 자료들은 다운로드가 안 되는 걸 보니... (근데 또 제가 이걸 예전에 다운 받았던가 싶기도 합니다ㅜ)
  • profile profile
    어흑...ㅜㅜ 왜 전에 못봤을까 싶어요..
    심심하실때 타임머신개발좀 부탁드려요 ㅜㅜ
  • profile profile
    타임머신 개발 괜찮네요ㅎㅎㅎ