[Photos] [Module] Photos - Xem và Chia sẻ hình ảnh

--= Roll With The Wind =--
Quản trị viên
Phiên bản mới nhất hiện tại: 1.4.02

--------------------------------------------
+++ Cập nhật Photos 1.4.02

+ Cập nhật plupload trong ACP.
+ Thêm cấu hình dạng lưới cho block.
+ Thêm cấu hình vị trí chèn logo trong module.
--------------------------------------------
+++ Cập nhật Photos 1.4.01
+ Tương thích NukeViet 4.1.
+ Thay thế slider khi xem Album: MagicSlideshow thay cho Swiper.

=> Xem thêm hướng dẫn:

https://forum.nuke.vn/threads/Cap-nhat-Cap-nhat-Photos-len-1-4-01.195/


Website demo:
=> https://nukeviet-hvt.rhcloud.com/photos/
Các lỗi, ý kiến xin gửi về Github hoặc tại chủ đề này.
=> https://github.com/anhyeuviolet/module-photos/

Chúc các bạn vui vẻ.
 
Lần sửa cuối: Bảy 7, 2017 lúc 1:26 PM
Thành viên năng động
Mình đang dùng NV4.0.29 và module Photos bản 1.3.12. Vậy có thể update lên bản 1.4.01 không bạn? Hay bản 1.4.01 chỉ dành riêng cho NV4.1 thôi.
Còn nữa sao ở trên bạn ghi là +++ Cập nhật Photos 1.4.01 nhưng file đính kèm lại ghi là photos 1.3.12 có nhầm lẩn gì không bạn?
 
--= Roll With The Wind =--
Quản trị viên
Mình đang dùng NV4.0.29 và module Photos bản 1.3.12. Vậy có thể update lên bản 1.4.01 không bạn? Hay bản 1.4.01 chỉ dành riêng cho NV4.1 thôi.
Còn nữa sao ở trên bạn ghi là +++ Cập nhật Photos 1.4.01 nhưng file đính kèm lại ghi là photos 1.3.12 có nhầm lẩn gì không bạn?
1/ 1.3.12 Up lên 1.4.01 được nha.
2/ Đính kèm sai do chuyển dữ liệu qua forum mới bị lỗi.
 
Thích: duongnguyen
Thành viên năng động
1/ 1.3.12 Up lên 1.4.01 được nha.
2/ Đính kèm sai do chuyển dữ liệu qua forum mới bị lỗi.
Như vậy Module Photos 1.4.01 chạy được trên NV4.0.29 đúng không bạn? Thanks!
 
--= Roll With The Wind =--
Quản trị viên
Như vậy Module Photos 1.4.01 chạy được trên NV4.0.29 đúng không bạn? Thanks!
Mình thử nghiệm thì không thấy vấn đề gì. Bác thử xem nhé !
 
Thích: duongnguyen
Thành viên quá tích cực
Quản trị viên
Liệu user có up ảnh lên đươc không anh?
 
Thành viên năng động
Liệu user có up ảnh lên đươc không anh?
Mình thấy có mà! Admin phân quyền cho họ!
 
--= Roll With The Wind =--
Quản trị viên
Liệu user có up ảnh lên đươc không anh?
Mình thấy có mà! Admin phân quyền cho họ!
Theo thiết kế ban đầu thì chưa có :D
 
Thành viên năng động
Mình đang dùng cái này để phân quyền nè!
Vào "Tài khoản -> Chọn tài khoản quản trị cần sửa - Click "Sửa" -> Trong mục cuối cùng "Quyền hạn" -> Click chọn để cho phép họ quản lý module này" :) Sau đó: "Lưu thay đổi"
Không biết vậy có đúng không!
 
--= Roll With The Wind =--
Quản trị viên
Mình đang dùng cái này để phân quyền nè!
Vào "Tài khoản -> Chọn tài khoản quản trị cần sửa - Click "Sửa" -> Trong mục cuối cùng "Quyền hạn" -> Click chọn để cho phép họ quản lý module này" :) Sau đó: "Lưu thay đổi"
Không biết vậy có đúng không!
Nếu làm cách đó, module nào cũng áp dụng được.
Thành viên đăng bài thì thông qua front-end mới đáng kể, chứ làm mod, admin thì đơn giản rồi.
 
Thích: phavaphu
Thành viên quá tích cực
Quản trị viên
Mình đang dùng cái này để phân quyền nè!
Vào "Tài khoản -> Chọn tài khoản quản trị cần sửa - Click "Sửa" -> Trong mục cuối cùng "Quyền hạn" -> Click chọn để cho phép họ quản lý module này" :) Sau đó: "Lưu thay đổi"
Không biết vậy có đúng không!
Đúng rồi, ý mình là front-end, người dùng có thể đăng ảnh ngoài site chứ không phải trong control :D
 
Thành viên mới
Có 1 vấn đề là người dùng khi xem hình click vào hình ở chuyên mục nhưng hệ thống không cập nhật lượt view hình đó, trừ khi click hẳn sâu vào trong link hình thì mới + lượt view. Thường thì người xem chỉ xem hình ngoài chuyên mục và click phóng to lên chứ mấy ai vào hẳn bên trong hình xem 1 tấm xong quay ra xem tấm khác đâu ạ :D
 
Thích: anhyeuviolet
--= Roll With The Wind =--
Quản trị viên
Có 1 vấn đề là người dùng khi xem hình click vào hình ở chuyên mục nhưng hệ thống không cập nhật lượt view hình đó, trừ khi click hẳn sâu vào trong link hình thì mới + lượt view. Thường thì người xem chỉ xem hình ngoài chuyên mục và click phóng to lên chứ mấy ai vào hẳn bên trong hình xem 1 tấm xong quay ra xem tấm khác đâu ạ :D
Cảm ơn bạn !
 
Thành viên quá tích cực
Quản trị viên
Thông báo từ Hệ thống
Nên chú ý: Undefined index: des_length in file /modules/photos/blocks/global.block_photos_new.php on line 152

:65:bác xem giúp chổ này ạ
 
--= Roll With The Wind =--
Quản trị viên
Thông báo từ Hệ thống
Nên chú ý: Undefined index: des_length in file /modules/photos/blocks/global.block_photos_new.php on line 152

:65:bác xem giúp chổ này ạ
Lỗi nhỏ mà.
Mình sửa ở đây rồi.
https://github.com/anhyeuviolet/module-photos/commit/484f8cb7182c521d022428c6fc526ea24fcc7d71
 
Thích: David An
Thành viên quá tích cực
Quản trị viên
đã tải về ( cài lại ) vẫn bị lỗi 4.1
 
--= Roll With The Wind =--
Quản trị viên
Thay toàn bộ code của block global.block_photos_new.php bằng code dưới:


PHP:
<?php

/**
 * @Project PHOTOS 4.x
 * @Author KENNY NGUYEN (nguyentiendat713@gmail.com)
 * @Copyright (C) 2015 tradacongnghe.com. All rights reserved
 * @Based on NukeViet CMS
 * @License GNU/GPL version 2 or any later version
 * @Createdate  Fri, 18 Sep 2015 11:52:59 GMT
 */

if( ! defined( 'NV_MAINFILE' ) ) die( 'Stop!!!' );

if( ! nv_function_exists( 'photos_thumbs' ) )
{
    function photos_thumbs( $id, $file, $module_upload, $width = 270, $height = 210, $quality = 90 )
    {
        if( $width >= $height ) $rate = $width / $height;
        else  $rate = $height / $width;

        $image = NV_UPLOADS_REAL_DIR . '/' . $module_upload . '/images/' . $file;
 
        if( $file != '' and file_exists( $image ) )
        {
            $imgsource = NV_BASE_SITEURL . NV_UPLOADS_DIR . '/' . $module_upload . '/images/' . $file;
            $imginfo = nv_is_image( $image );

            $basename = $module_upload . '_' . $width . 'x' . $height . '-' . $id . '-' . md5_file( $image ) . '.' . $imginfo['ext'];

            if( file_exists( NV_ROOTDIR . '/' . NV_UPLOADS_DIR . '/' . $module_upload. '/thumbs/' . $basename ) )
            {
                $imgsource = NV_BASE_SITEURL . NV_UPLOADS_DIR . '/' . $module_upload. '/thumbs/' . $basename;
            }
            else
            {

                $_image = new NukeViet\Files\Image( $image, NV_MAX_WIDTH, NV_MAX_HEIGHT );

                if( $imginfo['width'] <= $imginfo['height'] )
                {
                    $_image->resizeXY( $width, 0 );

                }
                elseif( ( $imginfo['width'] / $imginfo['height'] ) < $rate )
                {
                    $_image->resizeXY( $width, 0 );
                }
                elseif( ( $imginfo['width'] / $imginfo['height'] ) >= $rate )
                {
                    $_image->resizeXY( 0, $height );
                }

                $_image->cropFromCenter( $width, $height );

                $_image->save( NV_ROOTDIR . '/' . NV_UPLOADS_DIR . '/' . $module_upload . '/thumbs/', $basename, $quality );

                if( file_exists( NV_ROOTDIR . '/' . NV_UPLOADS_DIR . '/' . $module_upload. '/thumbs/' . $basename ) )
                {
                    $imgsource = NV_BASE_SITEURL . NV_UPLOADS_DIR . '/' . $module_upload. '/thumbs/' . $basename;
                }
            }
        }
        elseif( nv_is_url( $file ) )
        {
            $imgsource = $file;
        }
        else
        {
            $imgsource = '';
        }
        return $imgsource;
    }
}

if( ! nv_function_exists( 'nv_block_photos_new' ) )
{
    function nv_block_config_photos_new( $module, $data_block, $lang_block )
    {
        global $site_mods;

        $html = '<tr>';
        $html .= '<td>' . $lang_block['numrow'] . '</td>';
        $html .= '<td><input type="text" class="form-control w200" name="config_numrow" size="5" value="' . $data_block['numrow'] . '"/></td>';
        $html .= '</tr>';
        
        $html .= '<tr>';
        $html .= '<td>' . $lang_block['title_length'] . '</td>';
        $html .= '<td><input type="text" class="form-control w200" name="config_title_length" size="5" value="' . $data_block['title_length'] . '"/></td>';
        $html .= '</tr>';
        
        $html .= '<tr>';
        $html .= '<td>' . $lang_block['slide_mode'] . '</td>';
        $html .= '<td><input type="checkbox" class="form-control" name="config_slide_mode" value="1" ' . ($data_block['slide_mode'] == 1 ? 'checked="checked"' : '') . '"/></td>';
        $html .= '</tr>';
        
        return $html;
    }

    function nv_block_config_photos_new_submit( $module, $lang_block )
    {
        global $nv_Request;
        $return = array();
        $return['error'] = array();
        $return['config'] = array();
         $return['config']['numrow'] = $nv_Request->get_int( 'config_numrow', 'post', 0 );
         $return['config']['title_length'] = $nv_Request->get_int( 'config_title_length', 'post', 0 );
         $return['config']['slide_mode'] = $nv_Request->get_int( 'config_slide_mode', 'post', 0 );
        return $return;
    }

    function nv_block_photos_new( $block_config )
    {
        global $nv_Cache, $module_photo_category, $module_info, $site_mods, $module_config, $global_config, $db, $blockID;
        
        $module = $block_config['module'];
        
        $thumb_width = $module_config[$module]['cr_thumb_width'];
        $thumb_height = $module_config[$module]['cr_thumb_height'];
        $thumb_quality = $module_config[$module]['cr_thumb_quality'];

        $mod_data = $site_mods[$module]['module_data'];
        $mod_file = $site_mods[$module]['module_file'];
 
 
        $db->sqlreset()
            ->select( 'r.*, a.alias, a.album_id, a.category_id, a.capturedate' )
            ->from( NV_PREFIXLANG . '_' . $mod_data . '_rows r LEFT JOIN ' . NV_PREFIXLANG . '_' . $mod_data . '_album a ON ( r.album_id = a.album_id )' )
            ->where( 'a.status= 1 AND r.status = 1' )
            ->order( 'a.date_added DESC' )
            ->limit( $block_config['numrow'] );
        
        $list = $nv_Cache->db( $db->sql(), 'row_id', $module );
        if( ! empty( $list ) )
        {
            if( file_exists( NV_ROOTDIR . '/themes/' . $global_config['module_theme']  . '/modules/' . $mod_file . '/block_photos_new.tpl' ) )
            {
                $block_theme = $global_config['module_theme'] ;
            }
            else
            {
                $block_theme = 'default';
            }

            $xtpl = new XTemplate( 'block_photos_new.tpl', NV_ROOTDIR . '/themes/' . $block_theme . '/modules/' . $mod_file );
            $xtpl->assign( 'BLOCK_ID', $blockID );
            $xtpl->assign( 'TEMPLATE', $block_theme );
            $xtpl->assign( 'MODULE_FILE', $mod_file );
            foreach( $list as $album )
            {
                $album['name'] = nv_clean60( $album['name'], $block_config['title_length'] );
                $album['link'] = NV_BASE_SITEURL . 'index.php?' . NV_LANG_VARIABLE . '=' . NV_LANG_DATA . '&amp;' . NV_NAME_VARIABLE . '=' . $module . '&amp;' . NV_OP_VARIABLE . '=' . $module_photo_category[$album['category_id']]['alias'] . '/' . $album['alias'] . '-' . $album['album_id'] . '/' . $album['row_id'] . $global_config['rewrite_exturl'];
                $album['date_added'] = nv_date( 'd/m/Y', $album['date_added'] );
                $album['capturedate'] = nv_date( 'd/m/Y', $album['capturedate'] );
                $album['thumb'] = photos_thumbs( $album['album_id'], $album['file'], $module, $thumb_width, $thumb_height, $thumb_quality );
                $album['file'] = NV_BASE_SITEURL . NV_UPLOADS_DIR . '/' . $module . '/images/' . $album['file'];

                $xtpl->assign( 'ALBUM', $album );
                if($block_config['slide_mode'] == 1){
                    if( !defined ('PHOTOS_NEWS_SLIDE') ){
                        define('PHOTOS_NEWS_SLIDE', true);
                        $xtpl->parse( 'slide.js' );
                    }
                    $xtpl->parse( 'slide.loop_album' );
                    
                }else{
                    $xtpl->parse( 'main.loop_album' );
                }
            }
            if($block_config['slide_mode'] == 1){
                $xtpl->parse( 'slide' );
                return $xtpl->text( 'slide' );
            }else{
                $xtpl->parse( 'main' );
                return $xtpl->text( 'main' );
            }
        }
    }
}
if( defined( 'NV_SYSTEM' ) )
{
    global $site_mods, $module_name, $global_photo_cat, $module_photo_category;
    $module = $block_config['module'];
    if( isset( $site_mods[$module] ) )
    {
        if( $module == $module_name )
        {
            $module_photo_category = $global_photo_cat;
            unset( $module_photo_category[0] );
        }
        else
        {
            $module_photo_category = array();
            $sql = 'SELECT * FROM ' . NV_PREFIXLANG . '_' . $site_mods[$module]['module_data'] . '_category ORDER BY sort_order ASC';
            $list = $nv_Cache->db( $sql, 'category_id', $module );
            foreach( $list as $l )
            {
                $module_photo_category[$l['category_id']] = $l;
                $module_photo_category[$l['category_id']]['link'] = NV_BASE_SITEURL . 'index.php?' . NV_LANG_VARIABLE . '=' . NV_LANG_DATA . '&amp;' . NV_NAME_VARIABLE . '=' . $module . '&amp;' . NV_OP_VARIABLE . '=' . $l['alias'];
            }
        }
        $content = nv_block_photos_new( $block_config );
    }
}
 
Thành viên quá tích cực
Quản trị viên
:49: tải luôn ở trên mà
 
--= Roll With The Wind =--
Quản trị viên
:49: tải luôn ở trên mà
Tuỳ bạn thôi :D
 
Thích: David An
Thành viên năng động
Muốn lấy các ảnh mới nhất (nhóm tin mới nhất) giống module news thì như thế nào vậy bạn anhyeuviolet?
 
Thích: David An