이온디
호스팅센터
웹디벨로퍼
프리랜서카페
스레드

스크랩(threads) v1

2025년 01월 31일

eb_threads.scrap.v1


list.blade.php

@if($is_logged)
    @php
       $oDB = DB::getInstance();

       // 스크랩 카운트를 가져오는 쿼리 실행 => $scrap_count
       $query = 'SELECT count(*) AS count FROM member_scrap WHERE document_srl = ?';
       $stmt = $oDB->query($query, $document->document_srl);
       $result = $stmt->fetchAll();
       $scrapped_count = $result[0]->count;

       // 스크랩 회원 리스트를 가져오는 쿼리 실행 => $scrap_member_list
       $member_columns = preg_filter('/^/', 'member.', ['member_srl', 'user_id', 'email_address', 'phone_number', 'user_name', 'nick_name', 'extra_vars']);
       $query = 'SELECT '. implode(',', $member_columns) .' FROM member_scrap LEFT JOIN member ON member_scrap.member_srl = member.member_srl WHERE member_scrap.document_srl = ?';
       $stmt = $oDB->query($query, $document->document_srl);
       $result = $stmt->fetchAll();
       $scrap_member_list = $result;
    @endphp
    @if($scrapped_count > 0)
       <a href="javascript:;" onclick="doDeleteScrap('{$document->document_srl}'); return false;" class="cnt-box"><i class="scrap-fill"></i></a>
    @else
       <a href="javascript:;" onclick="doScrap('{$document->document_srl}'); return false;" class="cnt-box"><i class="scrap"></i></a>
    @endif
@endif


script.js

function doDeleteScrap(document_srl) {
    saveScrollPosition(); // 스크롤 위치 저장
    shouldRestoreScroll = true; // 스크롤 복원을 활성화
    var params = [];
    params['document_srl'] = document_srl;
    exec_json(
       'member.procMemberDeleteScrap',
       params,
       function () {
       location.reload();
       },
       function(response){
          console.log(response);
          return false;
       });
}

function doScrap(document_srl) {
    saveScrollPosition(); // 스크롤 위치 저장
    shouldRestoreScroll = true; // 스크롤 복원을 활성화
    var params = [];
    params.document_srl = document_srl;
    exec_json(
       'member.procMemberScrapDocument',
       params,
       function () {
       location.reload();
       },
       function(response){
          console.log(response);
          if(response.error=='-1'){
             // const mid = window.location.pathname;
             const mid = window.location.pathname.replace(/^\/(.*)\/$/, '/$1');
             // console.log(mid);
             // window.location.href = mid + '/login';
             window.location.href = mid + '/?act=dispMemberLoginForm';
             return false;
          }
       });
}
 


내용을 입력하세요
0
댓글은 로그인 사용자만 작성 가능합니다. 로그인하기
  • Profile
    2025 년 01 월 31 일 (17:20)

    scrap v2

    @php
        // scrap v2
        $document_srl = $document->document_srl;
    
        $args = new stdClass();
        $args->document_srl = $document_srl;
        $args->member_srl = $logged_info->member_srl;
        $scrapdocs = executeQuery('member.getScrapDocument', $args);
        $scrapdocs_count = 0;
        $scrapdocs_count = $scrapdocs->data->count;
    @endphp
    
    
    <a href="javascript:;" onclick="toggleScrap(this, {{$document_srl}}, {{$scrapdocs_count}} ); return false;" class="cnt-box"><i class="scrap"></i></a>
    
    <script>
        function toggleScrap(button, document_srl, scrapdocs_count) {
           var params = new Array();
           params['document_srl'] = document_srl;
    
           if (scrapdocs_count > 0) {
              // 스크랩 취소
              exec_json('member.procMemberDeleteScrap', params);
              $.ajax({
                 success: function() {
                    // 아이콘 변경
                    $(button).find("i").attr("class", "scrap");
                    $(button).attr("onclick", "toggleScrap(this, " + document_srl + ", 0)");
                 }
              });
           } else {
              // 스크랩하기
              exec_json('member.procMemberScrapDocument', params);
              $.ajax({
                 success: function() {
                    // 아이콘 변경
                    $(button).find("i").attr("class", "scrap-fill");
                    $(button).attr("onclick", "toggleScrap(this, " + document_srl + ", 1)");
                 }
              });
           }
        }
    </script>
    답변 달기