Jump to content
IPSViet.com

Leaderboard


Popular Content

Showing most liked content since 11/17/2017 in all areas

  1. 35 points
    This is very simple chat system with the basic features: Ajax chat, auto update. Display as IPS widgets, so you can place it in sidebar or top page. Sound notification. User can toggle on/off. Block users. Announcement (on Top or Tab). Support emoticons, URL, Image URL (gif, png, jpg) @mention by clicking on usernames. Flood control. Time format. Display newer messages in top or bottom. Permissions for viewing, chatting & management. Edit/Delete messages. Demo: [Hidden Content] DOWNLOAD [Hidden Content] (BIM42) Chatbox 2.0.0.zip (BIM41) Chatbox 1.3.4.zip
  2. 22 points
    Tháng 12 rồi, hãy đưa không khí giáng sinh vào website của bạn bằng plugin Snow Falling. Plugin này chỉ đơn giản là thêm jquery tạo hiệu ứng tuyết rơi đẹp mắt, bạn sẽ không cần phải upload file hay chỉnh sửa template, chỉ import vào là sử dụng DOWNLOAD Snow Falling 1.0.0.zip
  3. 5 points
    Thêm 1 plugin nhỏ cho các bạn trang trí Noel. Plugin này đơn giản chỉ dùng CSS để tạo hiệu ứng chùm đèn chuyển đổi màu sắc ở phía trên header, vô cùng gọn nhẹ chỉ cần import vào là sử dụng, không cần chỉnh sửa template. Nếu các bạn sử dụng theme màu tối sẽ đẹp hơn nhiều. DOWNLOAD (BIM) Christmas Lights.xml
  4. 4 points
    File việt hóa IPS 4.x của bạn @Nesbit , chỉ cần vào ACP > Customization > Language import để xài. DOWNLOAD: IPS 4.1 Tiếng Việt_4.1_2015-11-12.xml IPS 4.0 Tiếng Việt_2015-08-26.xml Tiếng Việt.xml (old)
  5. 3 points
    Widget hiển thị thành viên mới đăng ký. DOWNLOAD [lock](SOS40)_Latest_Registered_Members_1.0.0.zip[/lock] Nguồn: [Hidden Content]
  6. 3 points
    Như đã hứa, làm cái stats nhỏ này tặng các bạn với các chức năng chính như sau: Hiển thị thống kê với 2 tab duy nhất: Bài viết mới nhất và Chủ đề mới nhất. Sử dụng ajax update (chế độ tự động hoặc manually tùy chỉnh). Sử dụng widget để hiển thị. DOWNLOAD: (BIM41) Forums Stats 1.1.2.zip
  7. 3 points
    Plugin này sử dụng jquery Contact Buttons Plugin hiển thị một thanh trượt bên tay trái để link tới các trang fanpage. Hiện ứng trượt lên xuống theo trang đẹp mắt và tinh tế. Hỗ trợ các mạng xã hội: Facebook, Google, LinkedIn, Twitter, Pinterest, Youtube và có một nút hiển thị đường dẫn đến trang contact. DOWNLOAD: (BIM40) Floating Social Sidebar 1.0.0.zip CÀI ĐẶT & SỬ DỤNG: [Hidden Content]
  8. 3 points
    Plugin nhỏ gọn, hiển thị nút mũi tên ở góc dưới bên phải giống ở ipsviet.com , dễ dàng click và nhảy lên đầu trang Settings của nó cũng đơn giản với nút bật/tắt và chọn màu sắc. DOWNLOAD: (IPSViet) Scroll to top 1.0.0.zip
  9. 3 points
    Plugin này có chức năng hiển thị màu của nickname theo màu của nhóm. Hỗ trợ hầu hết các vị trí thông dụng. DOWNLOAD (SOS40)_Group_Color_on_User_Link_2.0.0.zip Nguồn: [Hidden Content]
  10. 2 points
    Nhân dịp Black Friday 2017 và cũng nhằm tạo điều kiện cho các bạn sở hữu các app, plugin có bản quyền, IPSViet giảm giá tất cả các sản phẩm. Chương trình giảm giá sẽ kéo dài cho đến hết ngày 4/12/2017. Danh sách các plugins và apps của IPSViet được giảm giá tại đây: [Hidden Content] Nếu như bạn không có tài khoản trên IPS thì có thể PM trực tiếp Bim tại diễn đàn này. Ngoài ra, còn rất nhiều các sản phẩm của lập trình viên khác đang được giàm giá cực khủng trên Marketplace các bạn có thể xem qua tại đây [Hidden Content] Chúc các bạn một mùa mua sắm cuối năm thật vui vẻ.
  11. 2 points
    Ko có trọn đời bạn ơi. Cứ 6 tháng bạn trả tiền renew là 25$ (cho app forums, core ko cần). Nếu ko renew bạn vẫn dc sử dụng tuy nhiên license hết active, nghĩa là ko dc update và hỗ trợ, kèm dịch vụ như chống spam chỉ hiệu quả với active license. [Hidden Content] Ở vn thì ít dùng ips, chứ nước ngoài mình thấy người ta chuyển từ xf qua ips nhiều.
  12. 2 points
    URL không dấu tiếng việt cho IPS4.0, hook vô core nên tác dụng với tất cả app. Cài đặt: Vào ACP > System > Plugins > Bấm nút "Install" và chọn file xml vừa unzip ở file tải về bên dưới, bấm nút Install Sử dụng: Admin CP > Plugins > (BIM40) NonUnicode URL > Bấm nút hình cây viết chì bên tay phải để bật plugin này. (Phiên bản 1.0.1 trở đi thì import vào là xài ko cần phải thiết lập gì cả) (BIM41) NonUnicode URL 1.0.1.zip (cho IPS từ 4.1.14 trở lên) (BIM40) NonUnicode URL 1.0.0.zip (cho IPS 4 phiên bản thấp hơn 4.1.14)
  13. 2 points
    Plugin này tạo một widget hiển thị thông báo với hiệu ứng chạy lên hoặc xuống đẹp mắt, thay thế cho widget Announcement có sẵn nhàm chán. Có thể tùy chỉnh số thông báo hiển thị, hiệu ứng (up/down), tốc độ. Live demo các bạn có thể xem tại fcine.net Để tạo thông báo thì vào sitecuaban.com/modcp/announcements/ chứ không phải thông báo từ 1 box của forums nha. Chỉnh sửa màu sắc và chữ trên tiêu đề thì vào edit skin -> CSS -> core -> Custom -> ipsvietscrollingannouncements.css DOWNLOAD: (IPSViet) Scrolling Announcements 1.0.0.zip
  14. 2 points
    Plugin này kiểm tra password nhập vào khi đăng ký thành viên, dựa vào độ dài và các ký tự để đưa ra trạng thái nhắc nhở thành viên về mức độ an toàn của mật khẩu: yếu, trung bình, mạnh. Ngoài ra còn có chức năng toggle ẩn/hiện mật khẩu. Download (BIM41) Password Strength Meter 1.1.0.zip
  15. 2 points
    Plugin hiển thị facebook fanpage dạng trượt khi rê chuột vào, có thể chỉnh vị trí trái/phải, import vào xài ngay ko cần upload css, js hay image gì cả Live Demo: [Hidden Content] DOWNLOAD: (BIM40) Sliding Facebook Fanpage 1.0.2.zip (IPSViet) Sliding Facebook Fanpage 1.0.1.zip
  16. 2 points
    Plugin nhỏ gọn tiện ích. Chức năng: Ẩn liên kết Ẩn code Ẩn nội dung trong thẻ hide DOWNLOAD: (BIM40) Hide link and code 1.0.0.zip
  17. 2 points
    Mặc định khi bạn share một bài viết từ forum lên Facebook thì hình ảnh từ link ngoài sẽ ko dc hiển thị (hình ảnh gửi kèm thì ok). Lý do là vì IPS sẽ tự động để og:image là đường dẫn logo nếu như bài viết không có bất kỳ hình gửi kèm nào. Để khắc phục vấn đề đó, plugin này sẽ tự động tìm và thêm đường dẫn hình ảnh liên kết ngoài vào <meta property="og:image" content="duongdanhinhanh.jpg"> Như vậy khi share lên Facebook sẽ hiện được hình ảnh đẹp mắt. Cách hoạt động của nó là lấy đường dẫn hình ảnh từ trong nội dung của bài viết đầu tiên. Đặc biệt có thể lấy cả hình ảnh thumbnail của youtube và vimeo. Lưu ý: sau khi cài đặt, viewsource sẽ thấy og:image là hình ảnh đầu tiên trong bài viết như vậy là plugin hoạt động tốt. Nếu như share lên Facebook vẫn ko hiện hình thì là do Facebook chưa lấy được dữ liệu mới cập nhật web bạn, vào [Hidden Content] sau đó copy url bài viết rồi bấm nút Debug, xong bấm Fetch new scrape information sẽ thấy hình ảnh mới thay vì logo của website. DOWNLOAD: (IPSViet) Image meta tag 1.0.2.zip (IPSViet) Image meta tag 1.0.1.zip (IPSViet) Image meta tag 1.0.0.zip Cài đặt xong là sử dụng ngay, không hề có bất cứ Setting nào. Không dùng nữa thì Uninstall hoặc Disable nó thôi.
  18. 2 points
    Plugin đơn giản làm widget với nội dung tùy thích, hỗ trợ HTML và PHP cho nội dung. DOWNLOAD: (BIM40) Blank Widget 1.0.0.zip
  19. 2 points
    Nay mình tìm được một jquery khá hay nên viết thành plugin cho các bạn. Plugin này cho phép bạn ẩn nội dung trong thẻ , thành viên sẽ bấm Like hoặc Tweet để xem nội dung ẩn. Đây là một cách hiệu quả để tăng lượt like cho page xã hội của bạn. Demo ngay tại phần download của topic này nhé. Bạn cần hiểu qua cách hoạt động của nó, ý tưởng plugin này khá đơn giản là dùng javascript sdk để kiểm tra like/tweet khi load trang, sau đó lưu lại cookie ở trình duyệt. Do đó nó có một vài điểm hạn chế như sau: Sau khi like nội dung sẽ hiển thị, khi bạn cố kiểm tra bằng cách unlike page thì nội dung vẫn ko bị ẩn đi lần nữa là do cookie. Nếu chưa có (lưu) cookie, và bạn đã like page rồi thì nội dung vẫn bị ẩn, cần unlike rồi like lại sẽ hiện. Dùng javascript để ẩn nội dung, cho nên bạn đừng báo lỗi là viewsource thấy nội dung gốc. Người dùng khi họ cần tìm nội dung họ muốn thì ko tiếc gì một like đâu. Lưu ý là plugin này không hoạt động chung được với plugin Sliding Facebook Fanpage nhé. DOWNLOAD [lock](BIM41) Social Content Locker 1.1.0.zip[/lock]
  20. 2 points
    Try to clear your browser cache. You can download here [Hidden Content]
  21. 2 points
    ​Hello, I think They customize from IPS soure, not only app
  22. 2 points
    Cần chuẩn bị: - 1 webhost có hỗ trợ php - 1 webhost cho phép tạo cơ sở dữ liệu - 1 Bộ source mới nhất của IPB - 1 FTP - cuối cùng quan trọng nhất là phải có ý tưởng và học hỏi 1. Tìm 1 webhost Để cài đặt ipb (hoặc bất kì 1 forum nào) chúng ta cần phải có 1 webhost. Các bạn có thể mua host của những nhà cung cấp như www.matbao.net hoặc www.pavietnam.vn .v.v...Còn nếu không thì bạn có thể kiếm những host miễn phí như [Hidden Content] đăng ký để có 1 webhost miễn phí Sau khi bạn đã có tài khoản lưu trữ thì các bạn chuyển sang bước thứ 2. 2. File Transfer Protocol & FileZilla Từ webhost của bạn, bạn sẽ nhận được đăng nhập thông tin chi tiết cho bảng điều khiển của bạn, và các chi tiết đăng nhập cho FTP. FTP là viết tắt của File transfer Protocol và được sử dụng để tải lên tập tin vào webspace của bạn. Có 1 chương trình đơn giản, miễn phí và dễ sữ dụng đó là FileZilla bấm vào đây download Chỉ cần làm theo các bước cài đặt FileZilla và bắt đầu nó, một khi bạn thực hiện xong, khởi động chương trình 1 Nhấp vào biểu tượng bạn nhìn thấy trên cùng bên trái (mũi tên) 2 Nhấp vào "Trang web mới" và điền vào tên trang web của bạn 3 Thay đổi kiểu "bình thường" và điền vào các chi tiết bạn đã nhận từ công ty lưu trữ của bạn 4 Nhấp vào nút Connect Bây giờ bạn sẽ thấy thư mục chủ, nhấn đúp chuột vào thư mục có tên là"public_html" Bạn đã thực hiện xong và hãy mở FileZilla bởi vì chúng ta sẽ thực hiện nó sau này trong hướng dẫn này 3.Tạo một cơ sở dữ liệu Để lưu trữ các tên người dùng và dữ liệu, Invision Power Board cần một cơ sở dữ liệu. Tạo một cơ sở dữ liệu là rất đơn giản. Máy chủ của bạn rất có thể có cPanel, mà là những gì tôi sẽ cho bạn thấy. Nếu máy chủ của bạn không có cPanel và sử dụng một bảng điều khiển khác nhau, tìm kiếm những điều tương tự như được hiển thị trên ảnh chụp màn hình. 1.Đăng nhập vào cpanel trang web của bạn, mà có thể được truy cập bằng cách đặt / cpanel ở cuối của tên miền của bạn 2. Bấm vào "MySQL Databases" (hiển thị ở trên) Ở đây mình muốn tạo ra một cơ sở dữ liệu mới, vì vậy mình sẽ điền vào tên,"demo" trường hợp này. Mình cũng cần thêm một người dùng, do đó điền vào khu vực này trong và bấm vào nút "Create User" Sau đó, thêm người sử dụng cơ sở dữ liệu, chọn hai và bấm vào nút "ADD". Chúng ta nên cung cấp cho người sử dụng quyền truy cập đầy đủ, bấm vào "All Priviliges" và Click "Make Changes". 4. Cách download và up IPB lên host Nếu như bạn đã mua bản quyền của IPB thì có thể vào trang chủ của IPB để tải về source mới nhất của IPB còn không thì bạn bấm vào [Hidden Content] để tải những bản null mới nhất ở ipsviet. Sau khi tải xong thì các bạn tiến hành giải nén và chuẩn bị up lên host Giải nén xong các bạn đi đến thư mục "upload" và chọn tất cả các file (hoặc nhấn Ctrl + A) sau đó kéo chúng vào "public_html" vào bên khung "filezilla" của bạn, nó sẽ bắt đầu upload các tập tin lên host. Một khi tất cả đã tải lên host xong thì chúng ta tiến hành bước thứ 5 5. Cài đặt Invision Power Board Sau khi tất cả đã được tải lên các bạn mở 1 trình duyệt web như là Internet explorer, firefox hoặc google chrome. Các bạn gõ địa chỉ web của các bạn ví dụ: [Hidden Content]. Khi đó bộ cài đặt sẽ bật lên. Click Next trên trang đầu tiên mà bạn thấy. Nếu có lỗi bất kỳ thì hãy liên hệ với nhà cung cấp hosting của bạn. 1. Đồng ý với điều khoản của EULA và bấm next 2. chọn các ứng dụng và tiếp tục bấm next 3. Hãy chắc chắn rằng domain của bạn OK và bấm next (thường thì nên để theo mặc định của nó) 4. Nếu bạn có bản quyền thì copy licsence của bạn vào còn không thì bạn để trống Bây giờ các bạn phải điền đầy đủ về thông tin database mà phần trên mình đã tạo, máy chủ thường được mặc định là localhost, nếu không thì các bạn phải liên hệ với nhà cung cấp hosting để biết được máy chủ. Các bạn điền chi tiết như trên, bạn không cần điền vào bảng Table Prefix Sau đó bạn điền vào tài khoản admin để bạn quản trị sau đó thì đợi nó kết thúc cài đặt. Đây là quá trình hoàn toàn tự động, khi nào xong thì bạn sẽ thấy nó thông báo: Vậy là diễn đàn của bạn đã được cài đặt thành công. Khi đó bạn chạy tên miền của bạn ví dụ: [Hidden Content] thì bạn sẽ thấy các dữ liệu và skin mặc định của IPB. Chỉ cần nhấn vào nút "sign in" là bạn có thể đăng nhập bằng nick admin. Sau đó nếu muốn cấu hình lại forum thì bấm vào dòng chữ "Login to your Admin CP" Chúc mừng bạn đã cài đặt hoàn thành! :)
  23. 1 point
    Thank you for the Christmas lights!
  24. 1 point
    Nay mình gặp nhiều khách hàng than phiền là cái plugin Quick Search của mình không tìm được những từ có ít hơn 4 ký tự. Những phiên bản IPS cũ mình nhớ có cái cài đặt chỉnh số ký tự trong ACP nhưng giờ bỏ đi, là do IPS đã thay đổi hoàn toàn chức năng tìm kiếm, và vấn đề này phụ thuộc vào cài đặt của mysql. Việc không tìm được những từ có ít hơn 4 ký tự vô cùng phiền, mình ngồi cả buổi cuối cùng cũng tìm ra cách giải quyết thế này. Nếu bạn dùng server hay vps riêng thì tự làm, nếu hosting thì liên hệ nhà cung cấp dịch vụ để chỉnh lại file config của mysql (my.cnf), thêm hoặc chỉnh lại giá trị sau ft_min_word_len=3 Khởi động lại mysql. Xong 2 bước này bạn vẫn chưa thấy nó hoạt động đâu. Vào ACP > Search > bấm nút Rebuild Search Index. Xong ra lại Dashboard sẽ thấy vài cái background tasks đang chạy, đợi nó chạy hết. Cuối cùng, cần phải chạy Support Tool để xóa cache. Thế là hoàn thành, bạn có thể tìm kiếm với từ khóa từ 3 ký tự trở lên.
  25. 1 point
    Please use google translate to know how to use IPS widget system.
  26. 1 point
    Try this css .bimcb_chatInput { color: #ffffff !important; }
  27. 1 point
    Không có bản miễn phí bạn nhé Giá của nó [Hidden Content] Core $100 + forum $100 = $200, không có chuyện mua giúp đâu, nó hỗ trợ qua domain + mail client nên tự mua là ok nhất. ------------- Chuyển đổi từ xenf qua thì khá dễ.
  28. 1 point
    Bạn up file này lên rồi chạy để check coi hosting có hỗ trợ ko ips4.php
  29. 1 point
    Mở file xml lên tìm và xóa nguyên cái function public static function formElements( $item=NULL, \IPS\Node\Model $container=NULL ) Xong import lại file, chạy Get Support xóa cache nếu bị lỗi css và theme.
  30. 1 point
    Đây là một app chạy trên IPS 4.x hỗ trợ chuyển đổi data từ các diễn đàn khác (xenforo, vbb, mybb,...) sang IPS 4.x một cách trực tiếp mà ko phải qua IPS 3.x. Hỗ trợ: vBulletin 3.x / 4.x Emoticons Profile Fields Member Groups Members Status Updates / Profile Comments Ignored Users Announcements Private Messages Ranks Forums Topics Posts Post Attachments Blogs Blog Entries Blog Comments Entry Attachments Calendars Calendar Events Gallery Albums Gallery Images Gallery Comments vBulletin 5.x Emoticons Profile Fields Member Groups Members Ignored Users Private Messages Ranks Forums Topics Posts Post Attachments MyBB 1.8.x Ban Filters Emoticons Warning Actions Warning Reasons Profile Fields Member Groups Members (including Ignored Users) Announcements Ranks Private Messages Profanity Filters Question and Answer Verification Forums Topics Posts Post Attachments Calendars Events phpBB 3.1.x Emoticons Profile Fields Member Groups Members Ignored Users Private Messages Ranks Profanity Filters Ban Filters Forums Topics Posts Post Attachments WordPress 4.x Members Pages Categories Articles Tags Comments Media XenForo 1.5.x Emoticons Profile Fields Member Groups Warning Reasons Members Status Updates Status Update Comments Ignored Users Ranks Private Messages Forums Topics Posts Post Attachments Page Nodes -> Pages Resource Manager File-less Records -> Pages Records Resource Manager Downloads -> Downloads (includes Custom Fields, Categories, and Reviews) Media Gallery -> Gallery (includes Categories, Albums, Images, and Comments) PunBB 1.x Member Groups Members (incl. passwords) Member Ranks Private Messages Forums Topics Posts Quá trình chuyển đổi gồm các bước sau: Cài đặt IPS 4.x trên một database mới. Download và cài đặt app chuyển đổi theo file gửi kèm cuối bài. (Hướng dẫn cài đặt application). ACP > System > Conversions > Start New Conversion. Step 1: Chỉ cần chọn Members & System Information. Step 2: chọn phiên bản VBB. Step 3: nhập thông tin database host, name, pass, prefix và charset của VBB. Bây giờ chỉ việc bấm convert từng phần như emoticons, profile fields, members,... Nếu đánh dấu Empty Local Data thì sẽ xóa dữ liệu gốc ở IPS, dùng dữ liệu convert từ VBB. DOWNLOAD convert.tar
  31. 1 point
    Bản IPS 4 này không còn chức năng chỉnh timezone như bản 3.x, mặc dù IPS nói là tự động set múi giờ nhưng thực sự không hẳn thế. Mình cài trên 2 server đều bị lệch timezone so với IPS 4. Sau 1 thời gian nghiên cứu thì phát hiện ra là một số server chưa đồng bộ ngày và giờ với ntp (Network Time Protocol). Cách thực hiện: You can sync your system time and date with ntp (Network Time Protocol) over a network or internet. Normally ntp should be installed to your Linux system as default, in case your system does not have ntp, you can easily install ntp package with a simple command. To install ntp on Ubuntu, Linux or debian based distribitions # apt-get update # apt-get install ntp To install ntp on Fedora, Centos or redhat based distribitions # yum install ntp After you set your timezone correcly, you should be able to synce your date and time with ntp command # ntpdate pool.ntp.org Hope this will help. Credit to Namhuy
  32. 1 point
    Hi all, I don't know if I post in the good forum ................. So I've a request for you, is it possible for you to code the Hook Topic Title Colored for IPS 4 ? I've ask to the original coder, but I don't have a feedback :( Please find below the Hook for IPS 3.4: <?xml version="1.0" encoding="UTF-8"?> -<hookexport> -<hookdata> -<config> <hook_name>(SOS32) Цветные название тем</hook_name> <hook_desc>Позволяет пользователю создавать темы с цветными название</hook_desc> <hook_author>Adriano Faria</hook_author> <hook_email>administracao@sosinvision.com.br</hook_email> <hook_website>[Hidden Content]; <hook_update_check/> -<hook_requirements> <![CDATA[a:4:{s:20:"hook_ipb_version_min";i:31007;s:20:"hook_ipb_version_max";i:0;s:20:"hook_php_version_min";s:0:"";s:20:"hook_php_version_max";s:0:"";}]]> </hook_requirements> <hook_version_human>2.2.0</hook_version_human> <hook_version_long>22000</hook_version_long> -<hook_extra_data> <![CDATA[a:4:{s:7:"display";a:3:{s:9:"templates";s:33:"From skin_post: topicTitleColored";s:8:"language";s:92:"From forums_public_post: ttc_backgroundcolor, ttc_bold, ttc_fontcolor, ttc_italic, ttc_title";s:8:"database";s:264:"ALTER TABLE topics ADD ttc_fontcolor varchar(32)<br />ALTER TABLE topics ADD ttc_backgroundcolor varchar(32)<br />ALTER TABLE topics ADD ttc_bold tinyint(1)<br />ALTER TABLE topics ADD ttc_italic tinyint(1)<br />ALTER TABLE forums ADD last_title_style varchar(255)";}s:8:"language";a:1:{s:18:"forums_public_post";a:5:{s:0:"";s:19:"ttc_backgroundcolor";i:1;s:8:"ttc_bold";i:2;s:13:"ttc_fontcolor";i:3;s:10:"ttc_italic";i:4;s:9:"ttc_title";}}s:9:"templates";a:1:{s:9:"skin_post";a:1:{s:0:"";s:17:"topicTitleColored";}}s:8:"database";a:1:{s:5:"alter";a:5:{i:0;a:6:{s:9:"altertype";s:3:"add";s:5:"table";s:6:"topics";s:5:"field";s:13:"ttc_fontcolor";s:8:"newfield";s:0:"";s:9:"fieldtype";s:11:"varchar(32)";s:7:"default";s:0:"";}i:1;a:6:{s:9:"altertype";s:3:"add";s:5:"table";s:6:"topics";s:5:"field";s:19:"ttc_backgroundcolor";s:8:"newfield";s:0:"";s:9:"fieldtype";s:11:"varchar(32)";s:7:"default";s:0:"";}i:2;a:6:{s:9:"altertype";s:3:"add";s:5:"table";s:6:"topics";s:5:"field";s:8:"ttc_bold";s:8:"newfield";s:0:"";s:9:"fieldtype";s:10:"tinyint(1)";s:7:"default";s:0:"";}i:3;a:6:{s:9:"altertype";s:3:"add";s:5:"table";s:6:"topics";s:5:"field";s:10:"ttc_italic";s:8:"newfield";s:0:"";s:9:"fieldtype";s:10:"tinyint(1)";s:7:"default";s:0:"";}i:4;a:6:{s:9:"altertype";s:3:"add";s:5:"table";s:6:"forums";s:5:"field";s:16:"last_title_style";s:8:"newfield";s:0:"";s:9:"fieldtype";s:12:"varchar(255)";s:7:"default";s:0:"";}}}}]]> </hook_extra_data> <hook_key>SOS33_ttc</hook_key> </config> </hookdata> -<hookfiles> -<file> <hook_file_real>SOS33_ttc_newtopic.php</hook_file_real> <hook_type>dataHooks</hook_type> <hook_classname>SOS33_ttc_newtopic</hook_classname> -<hook_data> <![CDATA[a:8:{s:12:"dataLocation";s:12:"postAddTopic";s:14:"libApplication";s:0:"";s:15:"classToOverload";s:0:"";s:9:"skinGroup";N;s:12:"skinFunction";N;s:4:"type";N;s:2:"id";N;s:8:"position";N;}]]> </hook_data> -<hooks_source> <![CDATA[<?php class SOS33_ttc_newtopic { /** * Product Title: (SOS34) Topic Title Colored * Product Version: 2.2.0 * Author: Adriano Faria * Website: SOS Invision * Website URL: [Hidden Content] * Email: administracao@sosinvision.com.br */ protected $request; public function __construct() { $this->registry = ipsRegistry::instance(); $this->memberData =& $this->registry->member()->fetchMemberData(); $this->settings =& $this->registry->fetchSettings(); $this->request =& $this->registry->fetchRequest(); } public function handleData( $data ) { if ( in_array( $this->memberData['member_group_id'], explode( ',', $this->settings['SOS33_ttc_grupos'] ) ) AND in_array( $this->request['f'], explode( ',', $this->settings['SOS33_ttc_forums'] ) ) ) { $data['ttc_fontcolor'] = $this->request['ttc_fontcolor']; $data['ttc_backgroundcolor'] = $this->request['ttc_backgroundcolor']; $data['ttc_bold'] = ( $this->request['ttc_bold'] == 1 ) ? 1: 0; $data['ttc_italic'] = ( $this->request['ttc_italic'] == 1 ) ? 1 : 0; } return $data; } }]]> </hooks_source> </file> -<file> <hook_file_real>SOS33_ttc_dataHook_forums.php</hook_file_real> <hook_type>dataHooks</hook_type> <hook_classname>SOS33_ttc_dataHook_forums</hook_classname> -<hook_data> <![CDATA[a:8:{s:12:"dataLocation";s:23:"updateForumLastPostData";s:14:"libApplication";s:0:"";s:15:"classToOverload";s:0:"";s:9:"skinGroup";N;s:12:"skinFunction";N;s:4:"type";N;s:2:"id";N;s:8:"position";N;}]]> </hook_data> -<hooks_source> <![CDATA[<?php class SOS33_ttc_dataHook_forums { /** * Product Title: (SOS34) Topic Title Colored * Product Version: 2.2.0 * Author: Adriano Faria * Website: SOS Invision * Website URL: [Hidden Content] * Email: administracao@sosinvision.com.br */ public function handleData( $forum_data ) { $topic = ipsRegistry::instance()->cache()->getCache( 'topicData' ); $styleArray = array(); if ( $topic['ttc_fontcolor'] OR $topic['ttc_backgroundcolor'] OR $topic['ttc_bold'] OR $topic['ttc_italic'] ) { $styleArray = array( 'styleForTid' => $topic['tid'], 'ttc_fontcolor' => $topic['ttc_fontcolor'], 'ttc_backgroundcolor' => $topic['ttc_backgroundcolor'], 'ttc_bold' => $topic['ttc_bold'], 'ttc_italic' => $topic['ttc_italic'], ); } $forum_data['last_title_style'] = serialize( $styleArray ); return $forum_data; } }]]> </hooks_source> </file> -<file> <hook_file_real>SOS33_ttc_profileTabs.php</hook_file_real> <hook_type>skinHooks</hook_type> <hook_classname>SOS33_ttc_profileTabs</hook_classname> -<hook_data> <![CDATA[a:8:{s:12:"dataLocation";s:0:"";s:14:"libApplication";s:0:"";s:15:"classToOverload";s:12:"skin_profile";s:9:"skinGroup";N;s:12:"skinFunction";N;s:4:"type";N;s:2:"id";N;s:8:"position";N;}]]> </hook_data> -<hooks_source> <![CDATA[class SOS33_ttc_profileTabs extends skin_profile(~id~) { /** * Product Title: (SOS34) Topic Title Colored * Product Version: 2.2.0 * Author: Adriano Faria * Website: SOS Invision * Website URL: [Hidden Content] * Email: administracao@sosinvision.com.br */ function tabSingleColumn($row=array(), $read_more_link='', $url='', $title='') { if ( $this->settings['SOS33_ttc_profiletab'] ) { $style = ""; if ( $row['ttc_fontcolor'] OR $row['ttc_backgroundcolor'] OR $row['ttc_bold'] OR $row['ttc_italic'] ) { $style .= " style='"; if ( $row['ttc_backgroundcolor'] ) { $style .= "-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;padding-left:5px;padding-right:5px;padding-top:2px;padding-bottom:2px;"; } $style .= ( $row['ttc_fontcolor'] ) ? "color: {$row['ttc_fontcolor']}; " : ''; $style .= ( $row['ttc_backgroundcolor'] ) ? "background-color: {$row['ttc_backgroundcolor']}; " : ''; $style .= ( $row['ttc_italic'] ) ? "font-style: italic; " : ''; $style .= ( $row['ttc_bold'] ) ? "font-weight: bold; " : ''; $style .= "'"; $title = "<span{$style}>".IPSText::truncate($title,90)."</span>"; } return parent::ttc_tabSingleColumn( $row, $read_more_link, $url, $title ); } else { return parent::tabSingleColumn( $row, $read_more_link, $url, $title ); } } }]]> </hooks_source> </file> -<file> <hook_file_real>SOS33_ttc_topicView.php</hook_file_real> <hook_type>templateHooks</hook_type> <hook_classname>SOS33_ttc_topicView</hook_classname> -<hook_data> <![CDATA[a:8:{s:12:"dataLocation";s:0:"";s:14:"libApplication";s:0:"";s:15:"classToOverload";s:0:"";s:9:"skinGroup";s:10:"skin_topic";s:12:"skinFunction";s:17:"topicViewTemplate";s:4:"type";s:2:"if";s:2:"id";s:11:"allowRating";s:8:"position";s:11:"pre.startif";}]]> </hook_data> -<hooks_source> <![CDATA[<?php /** * Product Title: (SOS34) Topic Title Colored * Product Version: 2.2.0 * Author: Adriano Faria * Website: SOS Invision * Website URL: [Hidden Content] * Email: administracao@sosinvision.com.br */ class SOS33_ttc_topicView { public function __construct() { $this->registry = ipsRegistry::instance(); $this->DB = $this->registry->DB(); $this->request =& $this->registry->fetchRequest(); $this->lang = $this->registry->getClass('class_localization'); } public function getOutput() { $topic = $this->registry->output->getTemplate('topic')->functionData['topicViewTemplate'][0]['topic']; $style = ""; if ( $topic['ttc_fontcolor'] OR $topic['ttc_backgroundcolor'] OR $topic['ttc_bold'] OR $topic['ttc_italic'] ) { $style .= ".ipsType_pagetitle {" . PHP_EOL; if ( $topic['ttc_backgroundcolor'] ) { $style .= "-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;padding-left:5px;padding-right:5px;padding-top:2px;padding-bottom:2px;display: inline;"; } $style .= ( $topic['ttc_fontcolor'] ) ? "\tcolor: {$topic['ttc_fontcolor']};" . PHP_EOL : ''; $style .= ( $topic['ttc_backgroundcolor'] ) ? "\tbackground-color: {$topic['ttc_backgroundcolor']};" . PHP_EOL : ''; $style .= ( $topic['ttc_italic'] ) ? "\tfont-style: italic;" . PHP_EOL : ''; $style .= ( $topic['ttc_bold'] ) ? "\tfont-weight: bold;" . PHP_EOL : ''; $style .= "}" . PHP_EOL; } return ( ! empty( $style ) ) ? "<style type='text/css'>{$style}</style>" : ''; } }]]> </hooks_source> </file> -<file> <hook_file_real>SOS33_ttc_modLibrary.php</hook_file_real> <hook_type>libraryHooks</hook_type> <hook_classname>SOS33_ttc_modLibrary</hook_classname> -<hook_data> <![CDATA[a:8:{s:12:"dataLocation";s:0:"";s:14:"libApplication";s:6:"forums";s:15:"classToOverload";s:16:"moderatorLibrary";s:9:"skinGroup";N;s:12:"skinFunction";N;s:4:"type";N;s:2:"id";N;s:8:"position";N;}]]> </hook_data> -<hooks_source> <![CDATA[<?php /** * Product Title: (SOS34) Topic Title Colored * Product Version: 2.2.0 * Author: Adriano Faria * Website: SOS Invision * Website URL: [Hidden Content] * Email: administracao@sosinvision.com.br */ class SOS33_ttc_modLibrary extends (~extends~) { /** * Recount a forum * * @return boolean */ public function forumRecount( $fid="" ) { $fid = intval($fid); if ( ! $fid ) { if ( $this->forum['id'] ) { $fid = $this->forum['id']; } else { return false; } } //----------------------------------------- // Get the topics.. //----------------------------------------- $topics = $this->DB->buildAndFetch( array( 'select' => 'COUNT(*) as count', 'from' => 'topics', 'where' => "approved=1 and forum_id={$fid}" ) ); //----------------------------------------- // Get the QUEUED topics.. //----------------------------------------- $queued_topics = $this->DB->buildAndFetch( array( 'select' => 'COUNT(*) as count', 'from' => 'topics', 'where' => "approved=0 and forum_id={$fid}" ) ); //----------------------------------------- // Get the DELETED topics.. //----------------------------------------- $deleted_topics = $this->DB->buildAndFetch( array( 'select' => 'COUNT(*) as count', 'from' => 'topics', 'where' => "approved=-1 and forum_id={$fid}" ) ); //----------------------------------------- // Get the posts.. //----------------------------------------- $posts = $this->DB->buildAndFetch( array( 'select' => 'SUM(posts) as replies', 'from' => 'topics', 'where' => "approved=1 and forum_id={$fid}" ) ); //----------------------------------------- // Get the QUEUED posts.. //----------------------------------------- $queued_posts = $this->DB->buildAndFetch( array( 'select' => 'SUM(topic_queuedposts) as replies', 'from' => 'topics', 'where' => "forum_id={$fid}" ) ); //----------------------------------------- // Get the DELETED posts.. //----------------------------------------- $deleted_posts = $this->DB->buildAndFetch( array( 'select' => 'SUM(topic_deleted_posts) as replies', 'from' => 'topics', 'where' => "forum_id={$fid}" ) ); //----------------------------------------- // Get the forum last poster.. //----------------------------------------- $last_post = $this->DB->buildAndFetch( array( 'select' => 'tid, title, last_poster_id, last_poster_name, seo_last_name, last_post', 'from' => 'topics', 'where' => "approved=1 and forum_id={$fid}", 'order' => 'last_post DESC', 'limit' => array( 1 ) ) ); $newest_topic = $this->DB->buildAndFetch( array( 'select' => 'title, tid, seo_first_name, ttc_fontcolor, ttc_backgroundcolor, ttc_bold, ttc_italic', 'from' => 'topics', 'where' => 'forum_id=' . $fid . ' and approved=1', 'order' => 'start_date desc', 'limit' => array( 1 ) ) ); $styleArray = array(); if ( $newest_topic['ttc_fontcolor'] OR $newest_topic['ttc_backgroundcolor'] OR $newest_topic['ttc_bold'] OR $newest_topic['ttc_italic'] ) { $styleArray = array( 'styleForTid' => $newest_topic['tid'], 'ttc_fontcolor' => $newest_topic['ttc_fontcolor'], 'ttc_backgroundcolor' => $newest_topic['ttc_backgroundcolor'], 'ttc_bold' => $newest_topic['ttc_bold'], 'ttc_italic' => $newest_topic['ttc_italic'], ); } $lastXTopics = $this->registry->class_forums->lastXFreeze( $this->registry->class_forums->buildLastXTopicIds( $fid, FALSE ) ); //----------------------------------------- // Reset this forums stats //----------------------------------------- $dbs = array( 'name_seo' => IPSText::makeSeoTitle( $this->registry->class_forums->allForums[ $fid ]['name'] ), 'last_poster_id' => intval($last_post['last_poster_id']), 'last_poster_name' => $last_post['last_poster_name'], 'seo_last_name' => IPSText::makeSeoTitle( $last_post['last_poster_name'] ), 'last_post' => intval($last_post['last_post']), 'last_title' => $last_post['title'], 'seo_last_title' => IPSText::makeSeoTitle( $last_post['title'] ), 'last_id' => intval($last_post['tid']), 'topics' => intval($topics['count']), 'posts' => intval($posts['replies']), 'queued_topics' => intval($queued_topics['count']), 'queued_posts' => intval($queued_posts['replies']), 'deleted_posts' => intval($deleted_posts['replies']), 'deleted_topics' => intval($deleted_topics['count']), 'newest_id' => intval($newest_topic['tid']), 'newest_title' => $newest_topic['title'], 'last_x_topic_ids' => $lastXTopics, 'last_title_style' => serialize( $styleArray ), ); if ( $this->registry->class_forums->allForums[ $fid ]['_update_deletion'] ) { $dbs['forum_last_deletion'] = time(); } $this->DB->force_data_type = array( 'last_poster_name' => 'string', 'last_title' => 'string', 'newest_title' => 'string', 'seo_last_title' => 'string', 'seo_last_name' => 'string' ); $this->DB->update( 'forums', $dbs, "id=" . $fid ); return true; } }]]> </hooks_source> </file> -<file> <hook_file_real>SOS33_ttc_newfileds.php</hook_file_real> <hook_type>templateHooks</hook_type> <hook_classname>SOS33_ttc_newfileds</hook_classname> -<hook_data> <![CDATA[a:8:{s:12:"dataLocation";s:0:"";s:14:"libApplication";s:0:"";s:15:"classToOverload";s:0:"";s:9:"skinGroup";s:9:"skin_post";s:12:"skinFunction";s:16:"postFormTemplate";s:4:"type";s:2:"if";s:2:"id";s:11:"pollboxHtml";s:8:"position";s:11:"pre.startif";}]]> </hook_data> -<hooks_source> <![CDATA[<?php /** * Product Title: (SOS34) Topic Title Colored * Product Version: 2.2.0 * Author: Adriano Faria * Website: SOS Invision * Website URL: [Hidden Content] * Email: administracao@sosinvision.com.br */ class SOS33_ttc_newfileds { public $registry; public $DB; public $request; public $lang; public function __construct() { $this->registry = ipsRegistry::instance(); $this->memberData =& $this->registry->member()->fetchMemberData(); $this->settings =& $this->registry->fetchSettings(); $this->request =& $this->registry->fetchRequest(); $this->DB = $this->registry->DB(); $this->cache = $this->registry->cache(); $this->caches =& $this->registry->cache()->fetchCaches(); } public function getOutput() { if ( $this->request['do'] == 'reply_post' ) { return false; } if ( !in_array( $this->memberData['member_group_id'], explode( ',', $this->settings['SOS33_ttc_grupos'] ) ) OR !in_array( $this->request['f'], explode( ',', $this->settings['SOS33_ttc_forums'] ) ) ) { return false; } return $this->registry->getClass('output')->getTemplate( 'post' )->topicTitleColored( $this->caches['topicTitleColored'] ); } }]]> </hooks_source> </file> -<file> <hook_file_real>SOS33_ttc_postModule.php</hook_file_real> <hook_type>libraryHooks</hook_type> <hook_classname>SOS33_ttc_postModule</hook_classname> -<hook_data> <![CDATA[a:8:{s:12:"dataLocation";s:0:"";s:14:"libApplication";s:6:"forums";s:15:"classToOverload";s:14:"classPostForms";s:9:"skinGroup";N;s:12:"skinFunction";N;s:4:"type";N;s:2:"id";N;s:8:"position";N;}]]> </hook_data> -<hooks_source> <![CDATA[<?php /** * Product Title: (SOS34) Topic Title Colored * Product Version: 2.2.0 * Author: Adriano Faria * Website: SOS Invision * Website URL: [Hidden Content] * Email: administracao@sosinvision.com.br */ class SOS33_ttc_postModule extends (~extends~) { private $formType = ''; public function hook_topicTitleColored() { if ( ! in_array( $this->formType, array( 'new', 'edit' ) ) ) { return false; } switch( $this->formType ) { case 'new': $checkFunc = 'topicSetUp'; break; case 'edit': $checkFunc = 'editSetUp'; break; } //----------------------------------------- // Global checks and functions //----------------------------------------- try { $this->globalSetUp(); } catch( Exception $error ) { $e = $error->getMessage(); if ( $this->formType == 'edit' AND $e == 'NO_POSTING_PPD' ) { } else { throw new Exception( $e ); } } //----------------------------------------- // Form specific... //----------------------------------------- try { $topic = $this->$checkFunc(); } catch( Exception $error ) { throw new Exception( $error->getMessage() ); } $styles = array(); foreach( array( 'fontcolor', 'backgroundcolor', 'italic', 'bold' ) as $style ) { $styles['ttc_' . $style ] = isset( $this->request['ttc_' . $style ] ) ? $this->request['ttc_' . $style ] : ''; } if( $this->_originalPost['new_topic'] ) { foreach( array( 'fontcolor', 'backgroundcolor', 'italic', 'bold' ) as $style ) { if ( ! isset( $styles['ttc_' . $style ] ) OR ! $styles['ttc_' . $style ] ) { if ( isset( $topic['ttc_' . $style ] ) AND $topic['ttc_' . $style ] ) { $styles['ttc_' . $style ] = $topic['ttc_' . $style ]; } } } } return $styles; } public function showEditForm() { $this->formType = 'edit'; $this->cache->updateCacheWithoutSaving( 'topicTitleColored', $this->hook_topicTitleColored() ); parent::showEditForm(); } public function showTopicForm() { $this->formType = 'new'; $this->cache->updateCacheWithoutSaving( 'topicTitleColored', $this->hook_topicTitleColored() ); parent::showTopicForm(); } public function editPost() { try { $return = parent::editPost(); if ( $return === TRUE ) { if( $this->_originalPost['new_topic'] == 1 ) { $bold = 0; $italic = 0; $toUpdate = array(); if ( isset( $this->request['ttc_fontcolor'] ) and $this->request['ttc_fontcolor'] ) { $toUpdate['ttc_fontcolor'] = $this->request['ttc_fontcolor']; } else { $toUpdate['ttc_fontcolor'] = ''; } if ( isset( $this->request['ttc_backgroundcolor'] ) and $this->request['ttc_backgroundcolor'] ) { $toUpdate['ttc_backgroundcolor'] = $this->request['ttc_backgroundcolor']; } else { $toUpdate['ttc_backgroundcolor'] = ''; } if ( isset( $this->request['ttc_bold'] ) and $this->request['ttc_bold'] == 1 ) { $bold = 1; } else { $bold = 0; } $toUpdate['ttc_bold'] = $bold; if ( isset( $this->request['ttc_italic'] ) and $this->request['ttc_italic'] == 1 ) { $italic = 1; } else { $italic = 0; } $toUpdate['ttc_italic'] = $italic; if ( count( $toUpdate ) ) { $classToLoad = IPSLib::loadLibrary( IPSLib::getAppDir( 'forums' ) . "/sources/classes/topics.php", 'app_forums_classes_topics', 'forums' ); $topicClass = new $classToLoad( $this->registry ); $topic = $topicClass->getTopicById( $this->request['t'] ); $topic = array_merge( $topic, $toUpdate ); $topicClass->updateTopic( $topic['tid'], $toUpdate ); /* Needs this in case someone but the topic starter edits the topic */ $this->setAuthor( $topic['starter_id'] ); $dbs = array(); $this->registry->cache()->updateCacheWithoutSaving( 'topicData', $topic ); $this->DB->setDataType( array( 'last_poster_name', 'seo_last_name', 'seo_last_title', 'last_title' ), 'string' ); /* Data Hook Location */ IPSLib::doDataHooks( $dbs, 'updateForumLastPostData' ); $this->DB->update( 'forums', $dbs, "id=".intval($topic['forum_id']) ); } } } return $return; } catch( Exception $error ) { throw new Exception( $error->getMessage() ); } } protected function updateForumAndStats( $topic, $type='new') { $this->registry->cache()->updateCacheWithoutSaving( 'topicData', $topic ); return parent::updateForumAndStats( $topic, $type ); } }]]> </hooks_source> </file> -<file> <hook_file_real>SOS33_ttc_newtopic_forumview.php</hook_file_real> <hook_type>templateHooks</hook_type> <hook_classname>SOS33_ttc_newtopic_forumview</hook_classname> -<hook_data> <![CDATA[a:8:{s:12:"dataLocation";s:0:"";s:14:"libApplication";s:0:"";s:15:"classToOverload";s:0:"";s:9:"skinGroup";s:10:"skin_forum";s:12:"skinFunction";s:18:"forumIndexTemplate";s:4:"type";s:2:"if";s:2:"id";s:10:"showtopics";s:8:"position";s:12:"post.startif";}]]> </hook_data> -<hooks_source> <![CDATA[<?php /** * Product Title: (SOS34) Topic Title Colored * Product Version: 2.2.0 * Author: Adriano Faria * Website: SOS Invision * Website URL: [Hidden Content] * Email: administracao@sosinvision.com.br */ class SOS33_ttc_newtopic_forumview { protected $registry; protected $DB; protected $request; protected $lang; protected $prefixes; public function __construct() { $this->registry = ipsRegistry::instance(); $this->DB = $this->registry->DB(); $this->request =& $this->registry->fetchRequest(); $this->lang = $this->registry->getClass('class_localization'); } public function getOutput() { $data = $this->registry->output->getTemplate('forum')->functionData['forumIndexTemplate'][0]; $style = ""; foreach( $data['topic_data'] as $topic ) { if ( ! $topic['ttc_fontcolor'] AND ! $topic['ttc_backgroundcolor'] AND ! $topic['ttc_bold'] AND ! $topic['ttc_italic'] ) { continue; } $style .= "#tid-link-{$topic['tid']} {" . PHP_EOL; if ( $topic['ttc_backgroundcolor'] ) { $style .= "-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;padding-left:5px;padding-right:5px;padding-top:2px;padding-bottom:2px;"; } $style .= ( $topic['ttc_fontcolor'] ) ? "\tcolor: {$topic['ttc_fontcolor']};" . PHP_EOL : ''; $style .= ( $topic['ttc_backgroundcolor'] ) ? "\tbackground-color: {$topic['ttc_backgroundcolor']};" . PHP_EOL : ''; $style .= ( $topic['ttc_italic'] ) ? "\tfont-style: italic;" . PHP_EOL : ''; $style .= ( $topic['ttc_bold'] ) ? "\tfont-weight: bold;" . PHP_EOL : ''; $style .= "}" . PHP_EOL; } return ( ! empty( $style ) ) ? "<style type='text/css'>{$style}</style>" : ''; } /*public function replaceOutput( $output, $key ) { $data = $this->registry->output->getTemplate('forum')->functionData['forumIndexTemplate'][0]; $tag = '<!--hook.'.$key.'-->'; $lastFound = 0; $fc = ""; $bg = ""; foreach( $data['topic_data'] as $tid => $topic ) { $tag2 = '"topic-'.$tid.'"'; $pos = strpos( $output, $tag, $lastFound ); $pos = $pos ? $pos : strpos( $output, '"topic-'.$tid.'"', $lastFound ) + strlen( $tag2 ) + 1; if ( $topic['ttc_fontcolor'] ) { $fc = 'color:'.$topic['ttc_fontcolor'].';'; } if ( $topic['ttc_backgroundcolor'] ) { $bg = 'background-color:'.$topic['ttc_backgroundcolor'].';'; } if ( $topic['ttc_bold'] ) { $bold = 'font-weight:bold;'; } if ( $topic['ttc_italic'] ) { $italic = 'font-style: italic;'; } if ( $fc OR $bg OR $bold or $italic ) { $strToInsert = '<div style="float:left;'.$fc.$bg.$bold.$italic.'">'; } if( $pos ) { $output = substr_replace( $output, $strToInsert, $pos, 0 ); $lastFound = $pos + strlen( $tag . $strToInsert ); } } return $output; }*/ } ]]> </hooks_source> </file> -<file> <hook_file_real>SOS33_ttc_search.php</hook_file_real> <hook_type>templateHooks</hook_type> <hook_classname>SOS33_ttc_search</hook_classname> -<hook_data> <![CDATA[a:8:{s:12:"dataLocation";s:0:"";s:14:"libApplication";s:0:"";s:15:"classToOverload";s:0:"";s:9:"skinGroup";s:11:"skin_search";s:12:"skinFunction";s:20:"searchResultsAsForum";s:4:"type";s:7:"foreach";s:2:"id";s:16:"NCresultsAsForum";s:8:"position";s:9:"outer.pre";}]]> </hook_data> -<hooks_source> <![CDATA[<?php class SOS33_ttc_search { /** * Product Title: (SOS34) Topic Title Colored * Product Version: 2.2.0 * Author: Adriano Faria * Website: SOS Invision * Website URL: [Hidden Content] * Email: administracao@sosinvision.com.br */ public function __construct() { $this->registry = ipsRegistry::instance(); $this->DB = $this->registry->DB(); $this->request =& $this->registry->fetchRequest(); $this->lang = $this->registry->getClass('class_localization'); $this->cache = $this->registry->cache(); $this->caches =& $this->registry->cache()->fetchCaches(); $this->settings =& $this->registry->fetchSettings(); } public function getOutput() { $data = $this->caches['resultSet']; $selectorTitle = $this->lang->words['view_result']; $style = ""; if ( is_array( $data ) AND count( $data ) ) { foreach( $data as $topic ) { if ( ! $topic['ttc_fontcolor'] AND ! $topic['ttc_backgroundcolor'] AND ! $topic['ttc_bold'] AND ! $topic['ttc_italic'] ) { continue; } if ( !$this->settings['SOS33_ttc_searchresults'] ) { continue; } $style .= "#trow_{$topic['tid']} a[title='{$selectorTitle}'] {" . PHP_EOL; if ( $topic['ttc_backgroundcolor'] ) { $style .= "-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;padding-left:5px;padding-right:5px;padding-top:2px;padding-bottom:2px;"; } $style .= ( $topic['ttc_fontcolor'] ) ? "\tcolor: {$topic['ttc_fontcolor']};" . PHP_EOL : ''; $style .= ( $topic['ttc_backgroundcolor'] ) ? "\tbackground-color: {$topic['ttc_backgroundcolor']};" . PHP_EOL : ''; $style .= ( $topic['ttc_italic'] ) ? "\tfont-style: italic;" . PHP_EOL : ''; $style .= ( $topic['ttc_bold'] ) ? "\tfont-weight: bold;" . PHP_EOL : ''; $style .= "}" . PHP_EOL; } } return ( ! empty( $style ) ) ? "<style type='text/css'>{$style}</style>" : ''; } }]]> </hooks_source> </file> -<file> <hook_file_real>SOS33_ttc_search_dummy.php</hook_file_real> <hook_type>skinHooks</hook_type> <hook_classname>SOS33_ttc_search_dummy</hook_classname> -<hook_data> <![CDATA[a:8:{s:12:"dataLocation";s:0:"";s:14:"libApplication";s:0:"";s:15:"classToOverload";s:11:"skin_search";s:9:"skinGroup";N;s:12:"skinFunction";N;s:4:"type";N;s:2:"id";N;s:8:"position";N;}]]> </hook_data> -<hooks_source> <![CDATA[ /** * Product Title: (SOS34) Topic Title Colored * Product Version: 2.2.0 * Author: Adriano Faria * Website: SOS Invision * Website URL: [Hidden Content] * Email: administracao@sosinvision.com.br */ /* This is just a dummy hook to get access to the data I need in a different templatehook */ class SOS33_ttc_search_dummy extends skin_search(~id~) { function topicPostSearchResultAsForum( $data, $resultAsTitle=false ) { $cache = $this->caches['resultSet']; $cache[ $data['tid'] ] = $data; $this->cache->updateCacheWithoutSaving( 'resultSet', $cache ); return parent::topicPostSearchResultAsForum( $data, $resultAsTitle ); } }]]> </hooks_source> </file> -<file> <hook_file_real>SOS33_ttc_boardIndex.php</hook_file_real> <hook_type>libraryHooks</hook_type> <hook_classname>SOS33_ttc_boardIndex</hook_classname> -<hook_data> <![CDATA[a:8:{s:12:"dataLocation";s:0:"";s:14:"libApplication";s:6:"forums";s:15:"classToOverload";s:12:"class_forums";s:9:"skinGroup";N;s:12:"skinFunction";N;s:4:"type";N;s:2:"id";N;s:8:"position";N;}]]> </hook_data> -<hooks_source> <![CDATA[<?php /** * Product Title: (SOS34) Topic Title Colored * Product Version: 2.2.0 * Author: Adriano Faria * Website: SOS Invision * Website URL: [Hidden Content] * Email: administracao@sosinvision.com.br */ class SOS33_ttc_boardIndex extends (~extends~) { public function forumsFormatLastinfo( $forum_data ) { if ( !$this->settings['SOS33_ttc_boardindex'] ) { return parent::forumsFormatLastInfo( $forum_data ); } $forum_data = parent::forumsFormatLastInfo( $forum_data ); if ( $forum_data['last_topic_title'] AND $forum_data['_hide_last_date'] != TRUE ) { $topic = unserialize( $forum_data['last_title_style'] ); if ( ( ! $topic['styleForTid'] OR $topic['styleForTid'] == $forum_data['last_id'] ) AND ( $topic['ttc_fontcolor'] OR $topic['ttc_backgroundcolor'] OR $topic['ttc_bold'] OR $topic['ttc_italic'] ) ) { $style .= " style='"; $style .= "-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;padding-left:5px;padding-right:5px;padding-top:2px;padding-bottom:2px;"; $style .= ( $topic['ttc_fontcolor'] ) ? "color: {$topic['ttc_fontcolor']}; " : ''; $style .= ( $topic['ttc_backgroundcolor'] ) ? "background-color: {$topic['ttc_backgroundcolor']}; " : ''; $style .= ( $topic['ttc_italic'] ) ? "font-style: italic; " : ''; $style .= ( $topic['ttc_bold'] ) ? "font-weight: bold; " : ''; $style .= "'"; $forum_data['last_topic_title'] = "<a{$style} href='" . $this->registry->getClass('output')->formatUrl( $this->registry->getClass('output')->buildUrl( "showtopic={$forum_data['last_id']}&amp;view=getnewpost", 'public' ), $forum_data['seo_last_title'], 'showtopic' ) . "' title='" . $this->lang->words['tt_gounread'] . ": {$forum_data['full_last_title']}'>{$forum_data['last_title']}</a>"; } } return $forum_data; } public function forumsCalcChildren( $root_id, $forum_data=array(), $done_pass=0 ) { //----------------------------------------- // Markers //----------------------------------------- $rtime = $this->registry->classItemMarking->fetchTimeLastMarked( array( 'forumID' => $forum_data['id'] ), 'forums' ); if( !isset($forum_data['_has_unread']) ) { $forum_data['_has_unread'] = ( $forum_data['last_post'] && $forum_data['last_post'] > $rtime ) ? 1 : 0; } if ( isset( $this->forum_cache[ $root_id ]) AND is_array( $this->forum_cache[ $root_id ] ) ) { foreach( $this->forum_cache[ $root_id ] as $data ) { if ( $data['last_post'] > $forum_data['last_post'] AND ! $data['hide_last_info'] ) { $forum_data['last_post'] = $data['last_post']; $forum_data['fid'] = $data['id']; $forum_data['last_id'] = $data['last_id']; $forum_data['last_title'] = $data['last_title']; $forum_data['seo_last_title'] = $data['seo_last_title']; $forum_data['password'] = isset( $data['password'] ) ? $data['password'] : ''; $forum_data['password_override'] = isset( $data['password_override'] ) ? $data['password_override'] : ''; $forum_data['last_poster_id'] = $data['last_poster_id']; $forum_data['last_poster_name'] = $data['last_poster_name']; $forum_data['seo_last_name'] = $data['seo_last_name']; $forum_data['_has_unread'] = $forum_data['_has_unread']; $forum_data['last_title_style'] = $data['last_title_style']; // TTC } //----------------------------------------- // Markers. We never set false from inside loop. //----------------------------------------- $rtime = $this->registry->classItemMarking->fetchTimeLastMarked( array( 'forumID' => $data['id'] ), 'forums' ); $data['_has_unread'] = 0; if( $data['last_post'] && $data['last_post'] > $rtime ) { $forum_data['_has_unread'] = 1; $data['_has_unread'] = 1; } //----------------------------------------- // Topics and posts //----------------------------------------- $forum_data['posts'] += $data['posts']; $forum_data['topics'] += $data['topics']; $_mod = ( isset( $this->_memberData['forumsModeratorData'] ) ) ? $this->_memberData['forumsModeratorData'] : array(); if ( $this->_memberData['g_is_supmod'] or ( $_mod && !empty( $_mod[ $data['id'] ]['post_q'] ) ) ) { $forum_data['queued_posts'] += $data['queued_posts']; $forum_data['queued_topics'] += $data['queued_topics']; } if ( ! $done_pass ) { $forum_data['subforums'][ $data['id'] ] = array($data['id'], $data['name'], $data['name_seo'], intval( $data['_has_unread'] ), 0 ); } $forum_data = $this->forumsCalcChildren( $data['id'], $forum_data, 1 ); } } return $forum_data; } public function hooks_recentTopics( $topicCount=5, $output=true ) { /* INIT */ $topicIDs = array(); $topic_rows = array(); $timesUsed = array(); $bvnp = explode( ',', $this->settings['vnp_block_forums'] ); $this->registry->class_localization->loadLanguageFile( array( 'public_topic' ), 'forums' ); /* Grab last X data */ foreach( $this->forum_by_id as $forumID => $forumData ) { if ( ! $forumData['can_view_others'] ) { continue; } if ( $forumData['password'] ) { continue; } if ( ! $this->registry->permissions->check( 'read', $forumData ) ) { continue; } if ( is_array( $bvnp ) AND count( $bvnp ) ) { if ( in_array( $forumID, $bvnp ) ) { continue; } } if ( $this->settings['forum_trash_can_id'] AND $forumID == $this->settings['forum_trash_can_id'] ) { continue; } /* Still here? */ $_topics = $this->lastXThaw( $forumData['last_x_topic_ids'] ); if ( is_array( $_topics ) ) { foreach( $_topics as $id => $time ) { if( in_array( $time, $timesUsed ) ) { while( in_array( $time, $timesUsed ) ) { $time +=1; } } $timesUsed[] = $time; $topicIDs[ $time ] = $id; } } } $timesUsed = array(); if ( is_array( $topicIDs ) && count( $topicIDs ) ) { krsort( $topicIDs ); /* We get up to double in case some of the latest are moved_to links - we do another array_slice afterwards to limit to right limit */ $_topics = array_slice( $topicIDs, 0, $topicCount * 2 ); if ( is_array( $_topics ) && count( $_topics ) ) { /* Query Topics */ $this->registry->DB()->build( array( 'select' => 't.tid, t.title as topic_title, t.title_seo, t.start_date, t.starter_id, t.starter_name, t.moved_to, t.views, t.posts, t.ttc_fontcolor, t.ttc_backgroundcolor, t.ttc_bold, t.ttc_italic', 'from' => array( 'topics' => 't' ), 'where' => 't.tid IN (' . implode( ',', array_values( $_topics ) ) . ')', 'add_join' => array( array( 'select' => 'm.*', 'from' => array( 'members' => 'm' ), 'where' => 'm.member_id=t.starter_id', 'type' => 'left', ), array( 'select' => 'pp.*', 'from' => array( 'profile_portal' => 'pp' ), 'where' => 'm.member_id=pp.pp_member_id', 'type' => 'left', ), ) ) ); $this->registry->DB()->execute(); while( $r = $this->registry->DB()->fetch() ) { if( !is_null($r['moved_to']) ) { continue; } $time = $r['start_date']; if( in_array( $time, $timesUsed ) ) { while( in_array( $time, $timesUsed ) ) { $time +=1; } } if ( $this->settings['SOS33_ttc_sidebar'] ) { $style = ""; if ( $output AND ( $r['ttc_fontcolor'] OR $r['ttc_backgroundcolor'] OR $r['ttc_bold'] OR $r['ttc_italic'] ) ) { $style .= " style='"; if ( $r['ttc_backgroundcolor'] ) { $style .= "-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;padding-left:5px;padding-right:5px;padding-top:2px;padding-bottom:2px;"; } $style .= ( $r['ttc_fontcolor'] ) ? "color: {$r['ttc_fontcolor']}; " : ''; $style .= ( $r['ttc_backgroundcolor'] ) ? "background-color: {$r['ttc_backgroundcolor']}; " : ''; $style .= ( $r['ttc_italic'] ) ? "font-style: italic; " : ''; $style .= ( $r['ttc_bold'] ) ? "font-weight: bold; " : ''; $style .= "'"; $r['topic_title'] = "<span{$style}>{$r['topic_title']}</span>"; } } $timesUsed[] = $time; $topics_rows[ $time ] = IPSMember::buildDisplayData( $r ); } /* Got any results? */ if ( count($topics_rows) ) { krsort( $topics_rows ); $topics_rows = array_slice( $topics_rows, 0, $topicCount ); } } } if( $output ) { return $this->registry->output->getTemplate( 'boards' )->hookRecentTopics( $topics_rows ); } else { return $topics_rows; } } }]]> </hooks_source> </file> </hookfiles> -<hookextras_settings> -<setting> <conf_is_title>1</conf_is_title> <conf_title_title>(SOS34) Цветные названия тем</conf_title_title> <conf_title_desc>Настройки для хука</conf_title_desc> <conf_title_noshow>0</conf_title_noshow> <conf_title_keyword>SOS33_ttc</conf_title_keyword> <conf_title_app>forums</conf_title_app> <conf_title_tab>IZ_mod</conf_title_tab> </setting> -<setting> <conf_id>392</conf_id> <conf_title>Использовать цвет фона?</conf_title> <conf_description/> <conf_group>36</conf_group> <conf_type>yes_no</conf_type> <conf_key>SOS33_ttc_backgroundcolor</conf_key> <conf_value/> <conf_default>1</conf_default> <conf_extra/> <conf_evalphp/> <conf_protected>1</conf_protected> <conf_position>1</conf_position> <conf_start_group>Общие настройки</conf_start_group> <conf_end_group>0</conf_end_group> <conf_add_cache>1</conf_add_cache> <conf_keywords/> <conf_title_keyword>SOS33_ttc</conf_title_keyword> <conf_is_title>0</conf_is_title> </setting> -<setting> <conf_id>393</conf_id> <conf_title>Показать окрашеные названия тем на главной странице</conf_title> <conf_description/> <conf_group>36</conf_group> <conf_type>yes_no</conf_type> <conf_key>SOS33_ttc_boardindex</conf_key> <conf_value/> <conf_default>1</conf_default> <conf_extra/> <conf_evalphp/> <conf_protected>1</conf_protected> <conf_position>2</conf_position> <conf_start_group/> <conf_end_group>0</conf_end_group> <conf_add_cache>1</conf_add_cache> <conf_keywords/> <conf_title_keyword>SOS33_ttc</conf_title_keyword> <conf_is_title>0</conf_is_title> </setting> -<setting> <conf_id>394</conf_id> <conf_title>Показать окрашенные названия тем в боковом блоке?</conf_title> <conf_description/> <conf_group>36</conf_group> <conf_type>yes_no</conf_type> <conf_key>SOS33_ttc_sidebar</conf_key> <conf_value/> <conf_default>1</conf_default> <conf_extra/> <conf_evalphp/> <conf_protected>1</conf_protected> <conf_position>3</conf_position> <conf_start_group/> <conf_end_group>0</conf_end_group> <conf_add_cache>1</conf_add_cache> <conf_keywords/> <conf_title_keyword>SOS33_ttc</conf_title_keyword> <conf_is_title>0</conf_is_title> </setting> -<setting> <conf_id>395</conf_id> <conf_title>Показать окрашенные название темы в результатах поиска?</conf_title> <conf_description/> <conf_group>36</conf_group> <conf_type>yes_no</conf_type> <conf_key>SOS33_ttc_searchresults</conf_key> <conf_value/> <conf_default>1</conf_default> <conf_extra/> <conf_evalphp/> <conf_protected>1</conf_protected> <conf_position>4</conf_position> <conf_start_group/> <conf_end_group>0</conf_end_group> <conf_add_cache>1</conf_add_cache> <conf_keywords/> <conf_title_keyword>SOS33_ttc</conf_title_keyword> <conf_is_title>0</conf_is_title> </setting> -<setting> <conf_id>396</conf_id> <conf_title>Показать окрашенные название темы в профиле вкладок (тем и сообщений)?</conf_title> <conf_description/> <conf_group>36</conf_group> <conf_type>yes_no</conf_type> <conf_key>SOS33_ttc_profiletab</conf_key> <conf_value/> <conf_default>1</conf_default> <conf_extra/> <conf_evalphp/> <conf_protected>1</conf_protected> <conf_position>5</conf_position> <conf_start_group/> <conf_end_group>0</conf_end_group> <conf_add_cache>1</conf_add_cache> <conf_keywords/> <conf_title_keyword>SOS33_ttc</conf_title_keyword> <conf_is_title>0</conf_is_title> </setting> -<setting> <conf_id>395</conf_id> <conf_title>Группы которые смогут создавать цветные темы</conf_title> <conf_description/> <conf_group>36</conf_group> <conf_type>multi</conf_type> <conf_key>SOS33_ttc_grupos</conf_key> <conf_value/> <conf_default/> <conf_extra>#show_groups#</conf_extra> -<conf_evalphp> <![CDATA[if ( $save == 1) { if ( is_array($_POST['SOS33_ttc_grupos']) ) { $_POST['SOS33_ttc_grupos'] = implode(",",$_POST['SOS33_ttc_grupos']); } else { $_POST['SOS33_ttc_grupos'] = ""; } $key = 'SOS33_ttc_grupos'; } if ( $show == 1 ) { $key = 'SOS33_ttc_grupos[]'; }]]> </conf_evalphp> <conf_protected>1</conf_protected> <conf_position>6</conf_position> <conf_start_group/> <conf_end_group>0</conf_end_group> <conf_add_cache>1</conf_add_cache> <conf_keywords/> <conf_title_keyword>SOS33_ttc</conf_title_keyword> <conf_is_title>0</conf_is_title> </setting> -<setting> <conf_id>396</conf_id> <conf_title>Форум, где пользователи могут создавать темы с цветными названиями</conf_title> <conf_description/> <conf_group>36</conf_group> <conf_type>multi</conf_type> <conf_key>SOS33_ttc_forums</conf_key> <conf_value/> <conf_default/> <conf_extra>#show_forums#</conf_extra> -<conf_evalphp> <![CDATA[if ( $save == 1) { if ( is_array($_POST['SOS33_ttc_forums']) ) { $_POST['SOS33_ttc_forums'] = implode(",",$_POST['SOS33_ttc_forums']); } else { $_POST['SOS33_ttc_forums'] = ""; } $key = 'SOS33_ttc_forums'; } if ( $show == 1 ) { $key = 'SOS33_ttc_forums[]'; }]]> </conf_evalphp> <conf_protected>1</conf_protected> <conf_position>7</conf_position> <conf_start_group/> <conf_end_group>0</conf_end_group> <conf_add_cache>1</conf_add_cache> <conf_keywords/> <conf_title_keyword>SOS33_ttc</conf_title_keyword> <conf_is_title>0</conf_is_title> </setting> </hookextras_settings> -<hookextras_language> -<language> <word_app>forums</word_app> <word_pack>public_post</word_pack> <word_key>ttc_backgroundcolor</word_key> <word_default>Фон</word_default> <word_custom/> <word_js>0</word_js> </language> -<language> <word_app>forums</word_app> <word_pack>public_post</word_pack> <word_key>ttc_title</word_key> <word_default>Цвета</word_default> <word_custom/> <word_js>0</word_js> </language> -<language> <word_app>forums</word_app> <word_pack>public_post</word_pack> <word_key>ttc_italic</word_key> -<word_default> <![CDATA[<em>Курсив</em>]]> </word_default> <word_custom/> <word_js>0</word_js> </language> -<language> <word_app>forums</word_app> <word_pack>public_post</word_pack> <word_key>ttc_fontcolor</word_key> <word_default>Цвет текста</word_default> <word_custom/> <word_js>0</word_js> </language> -<language> <word_app>forums</word_app> <word_pack>public_post</word_pack> <word_key>ttc_bold</word_key> -<word_default> <![CDATA[<strong>Жирный</strong>]]> </word_default> <word_custom/> <word_js>0</word_js> </language> </hookextras_language> <hookextras_modules/> <hookextras_help/> -<hookextras_templates> -<templates> <template_set_id>0</template_set_id> <template_group>skin_post</template_group> -<template_content> <![CDATA[<script type='text/javascript' src='{$this->settings['public_dir']}/js/3rd_party/colorpicker/jscolor.js'></script> <div class='ipsPostForm_sidebar_block'> <h3 class='bar'>{$this->lang->words['ttc_title']} <span class='desc'>{$this->lang->words['post_optional']}</span></h3> <ul class='ipsPad ipsForm ipsForm_vertical'> <li class='ipsField'> <label for='ttc_fontcolor' class=''>{$this->lang->words['ttc_fontcolor']}</label> <p class='ipsField_content'> <input id='ttc_fontcolor' class='input_text color {pickerPosition:"top",hash:true,required:false}' type="text" size="17" maxlength="10" name="ttc_fontcolor" value="{$formData['ttc_fontcolor']}" tabindex="0" /> </p> </li> <if test="$this->settings['SOS33_ttc_backgroundcolor']"> <li class='ipsField'> <label for='ttc_backgroundcolor' class=''>{$this->lang->words['ttc_backgroundcolor']}</label> <p class='ipsField_content'> <input id='topic_bg' class='input_text color {pickerPosition:"top",hash:true,required:false}' type="text" size="17" maxlength="10" name="ttc_backgroundcolor" value="{$formData['ttc_backgroundcolor']}" tabindex="0" /> </p> </li> </if> <li class='ipsField ipsField_checkbox'> <input type="checkbox" name="ttc_bold" id="ttc_bold" value="1" class="input_check" <if test="$formData['ttc_bold']">checked='checked'</if> /> <p class='ipsField_content'> <label for="ttc_bold"><strong>{$this->lang->words['ttc_bold']}</strong></label> </p> </li> <li class='ipsField ipsField_checkbox'> <input type="checkbox" name="ttc_italic" id="ttc_italic" value="1" class="input_check" <if test="$formData['ttc_italic']">checked='checked'</if> /> <p class='ipsField_content'> <label for='ttc_italic'><em>{$this->lang->words['ttc_italic']}</em></label> </p> </li> </ul> </div>]]> </template_content> <template_name>topicTitleColored</template_name> <template_data>$formData=array()</template_data> <template_updated>1305660883</template_updated> <template_removable>0</template_removable> <template_added_to>0</template_added_to> <template_user_added>0</template_user_added> <template_user_edited>0</template_user_edited> <template_master_key>root</template_master_key> <template_set_type/> </templates> -<templates> <template_group>skin_profile</template_group> -<template_content> <![CDATA[<div class='post_block no_sidebar'> <div class='post_wrap'> <if test="singleColumnTitle:|:$title"> <if test="singleColumnUrl:|:$url"> <h3 class='row2'><a href="$url" title="{$this->lang->words['view_topic']}">$title</a></h3> <else /> <h3 class='row2'>$title</h3> </if> </if> <div class='post_body'> <p class='posted_info'> <if test="date:|:$row['_raw_date']">{parse date="$row['_raw_date']" format="long"}<else />{$this->lang->words['posted']} {$row['_date_array']['mday']} {$row['_date_array']['smonth']} {$row['_date_array']['year']}</if> </p> <div class='post'> {$row['post']} </div> </div> </div> <br /> </div>]]> </template_content> <template_name>ttc_tabSingleColumn</template_name> -<template_data> <![CDATA[$row=array(), $read_more_link='', $url='', $title='']]> </template_data> <template_updated>1313408200</template_updated> <template_removable>1</template_removable> <template_added_to>1</template_added_to> <template_user_added>1</template_user_added> <template_user_edited>1</template_user_edited> <template_master_key>root</template_master_key> </templates> </hookextras_templates> <hookextras_css/> <hookextras_tasks/> <hookextras_database_create/> -<hookextras_database_alter> -<alter> <altertype>add</altertype> <table>topics</table> <field>ttc_fontcolor</field> <newfield/> <fieldtype>varchar(32)</fieldtype> <default>null</default> </alter> -<alter> <altertype>add</altertype> <table>topics</table> <field>ttc_backgroundcolor</field> <newfield/> <fieldtype>varchar(32)</fieldtype> <default>null</default> </alter> -<alter> <altertype>add</altertype> <table>topics</table> <field>ttc_bold</field> <newfield/> <fieldtype>tinyint(1)</fieldtype> <default>0</default> </alter> -<alter> <altertype>add</altertype> <table>topics</table> <field>ttc_italic</field> <newfield/> <fieldtype>tinyint(1)</fieldtype> <default>0</default> </alter> -<alter> <altertype>add</altertype> <table>forums</table> <field>last_title_style</field> <newfield/> <fieldtype>varchar(255)</fieldtype> <default>null</default> </alter> </hookextras_database_alter> <hookextras_database_update/> <hookextras_database_insert/> </hookexport> Thank in advance for your help and your feedback
  33. 1 point
    About This File This is a custom .htaccess to use on the IPS Community Suite Forums. It helps to improve your forums Google Page Speed and YSlow scores. The top segment is the same .htaccess that is generated by the IPS Forum software. This segment is Invision Power Services code and I do not claim it as my own. All rights and credit for this segment of the .htaccess are Invision Power Services. The bottom segment is based upon research of several websites and the references listed below. Please be careful when using this file because the contents may be incompatible with your server setup. Preventative measures have been taken to ensure that it should be safe to use in any Apache based environment. Google recommends a minimum of one week: [Hidden Content] GTmetrix recommends a minimum of one month: [Hidden Content] Download: [Hidden Content]
  34. 1 point
    Hiển thị ở sidebar thống kê forum: - Số bài viết - Số thành viên - Online đông nhất - Thành viên mới nhất Mặc định những thông số đó nó hiển thị phía dưới forum, hook này có chức năng ẩn nó ở dưới bottom và đưa nó lên sidebar cho đẹp. Ai thích thì xài, lưu ý nó có thể ko hoạt động với một vài skin bị chỉnh sửa quá nhiều ở boardIndexTemplate. (BIM34) Forum stats in sidebar 1.0.0.zip
  35. 1 point
    Đây là một application cho phép bạn lưu lại các liên kết trong ACP để dễ dàng truy cập một cách nhanh nhất. Nó hỗ trợ block ở Dashboard, chỉ cần kéo thả ra. DOWNLOAD (SOS41) Admin CP Useful Links 1.0.0.zip
  36. 1 point
    It's not a bug, Emoji supports older chatbox, not support the 1.1.x yet. Try to use my editted Emoji hook Emojis.xml
  37. 1 point
    Vừa nãy thấy có 1 người hỏi, nên viết cái bài này chia sẽ một số kinh nghiệm nhỏ để tối ưu hóa hoạt động của IPB. Lưu ý: IPB chạy mượt hay không phụ thuộc đa phần vào hosting, những cách dưới đây chỉ cải thiện một phần nào thôi. 1. Minify IPB có một chức năng gọi là Minify, chức năng này sẽ tự động nén những đoạn mã Javascript và CSS trước khi gửi nó đi. Nó sẽ giúp giảm kích cỡ file của Javascript và CSS, giảm thời gian tải trang với người xem web. Để bật nó lên, hãy vào ACP -> gõ vào khung search chữ Minify sẽ thấy Minify CSS and JS, chọn Yes và bấm Update. Đa phần nó có thể hoạt động trên mọi web host, nếu như bạn bật nó lên mà thấy bị lỗi thì tức là nó ko hoạt động được trên host của bạn, hãy tắt nó đi. 2. Load javascript files from Google Sẽ tải các javascript cần thiết từ google, giảm bớt tài nguyên tiêu thụ của hệ thống. Nếu là diễn đàn lớn thì nên bật nó. 3. Topic Marking và Topic Views Topic Marking là chức năng đánh dấu khi một bài viết được đọc. Mặc dù thành viên chuyển đổi qua các máy tính khác, hay truy cập bằng điện thoại thì IPB vẫn nhớ được chủ đề nào họ đã đọc và chưa đọc. Khi tắt nó đi thì chức năng đánh dấu vẫn hoạt động nhưng nó sẽ ko còn chính xác khi thành viên truy cập từ nhiều máy tính khác nhau. Nếu forum của bạn lớn và lượt truy cập đông thì mình khuyên bạn nên tắt đi, còn nhỏ và vừa thì cứ để đó. (Vào ACP tìm Topic Marking) Topic view là chức năng đếm lượt đọc của chủ đề. Diễn đàn lớn với một số lượng lớn thành viên truy cập nhiều giữa các chủ đề khác nhau thì hệ thống nó sẽ hoạt động càng nhiều để update lượt xem. Mặc định IPB đã tắt nó và bạn cũng đừng nên bật lại nó. Bạn đừng lo là như vậy sẽ không update được lượt xem, cứ 3 tiếng đồng hồ IPB sẽ tự update cho bạn. 4. Hosting attachments on a different server Tức là chứa file gửi kèm ở 1 server khác. Điều cần làm là điền vào Upload form action domain đường dẫn đến một script có chức năng uploads đến server khác. Sau đó thay đổi Uploads URL đến đúng url mới. 5. Hosting Javascript, CSS, and Images on a different server Cái này dễ hơn chức năng upload đến server khác như ở mục 4 và sẽ giúp giảm tải đáng kể băng thông sử dụng . Trước tiên vào ACP tìm Images, CSS and JS URL và cài đặt vào đường dẫn chứa javascript, css, image trên server khác. Sau đó upload đầy đủ các folder & file vào đúng đường dẫn (đã cài ở trên) Lưu ý bạn cần update nó mỗi khi thay đổi skin, css hay image... 6. Cached Content IPB được xây dựng để hỗ trợ cache một cách hiệu quả nhất (Vào ACP tìm Enable content caching). Mặc định nó đã được bật sẵn. Và mình khuyên bạn không nên tắt nó đi. Mặc định, cache của IPB được lưu trong database, dù vậy, IPB vẫn hỗ trợ tốt đối với các host có cài APC, eAccelerator, Memcache, XCache hoặc Disk cache. Để bật các loại cache đó lên trước tiên bạn host của bạn phải có hỗ trợ. Nếu không sẽ tự động về phương thức lưu cache mặc định của IPB. Còn cách lưu cache trên disk thì không cần host hỗ trợ, cache sẽ được lưu và thư mục cache (thư mục này cần chmod 755 hoặc 777). Cách bật rất đơn giản, thêm các dòng sau (tùy vào loại cache mà host bạn hỗ trợ, chỉ được xài 1 loại): APC: $INFO['use_apc'] = '1'; eAccelerator: $INFO['use_eaccelerator'] = '1'; Memcache: $INFO['use_memcache'] = '1'; XCache: $INFO['use_xcache'] = '1'; Disk storage: $INFO['use_diskcache'] = '1'; 7. Remove những hook không cần thiết: Bạn chỉ nên cài những hook, app thật sự cần thiết, còn những cái ít sử dụng thì nên remove nó đi.
  38. 1 point
    Plugin nhỏ hiển thị widget chuyển đổi đơn vị tiền tệ. DOWNLOAD (BIM40) Currency Converter 1.0.1.zip
  39. 1 point
    Trước đây mình có viết cái tut hướng dẫn rút gọn URL Mặc định ipsviet.com/topic/8-ph%E1%BA%A7n-m%E1%BB%81m-t%C4%83ng-t%E1%BB%91c-h%E1%BB%97-tr%E1%BB%A3-xem-phim-online-c%E1%BB%B1c-k%E1%BB%B3-hi%E1%BB%87u-qu%E1%BA%A3/ Thành như thế này: ipsviet.com/topic/8-phan-mem-tang-toc-ho-tro-xem-phim-online-cuc-ky-hieu-qua/ Tuy nhiên tut đó chỉ áp dụng với các bản 3.3 trở xuống, hơn nữa lại phải edit file nên mỗi lần upgrade ipb là phải edit lại, vô cùng bất tiện Hôm nay ngồi rãnh viết cái hook này để ko phải edit file cũng ko cần recache furl gì hết. (BIM34)_NonUnicode_URL_1.0.0.zip Cài đặt: Vào ACP > System > Manage Hooks -> bấm Install a new hook và browse đến cái file bim_nonunicode.xml rồi bấm nút Import. Sử dụng: Vào Admin CP > System Settings > Hooks > (Bim34) NonUnicode URL để bật nó lên.
  40. 1 point
    Mod này có chức năng show ảnh của bài viết khi share lên fb, mình cài rồi nhưng nó không hoạt động cho 3.4.7 cũng như 3.4.6. 4.0 thì chức năng share rất tốt nhưng chắc phải còn dài dài mới lên được. Phải nhờ chị Bim fix thôi :$ Thêm 1 cái nữa là với skin pc thì ở cuối mỗi topic nó có cái share twitter, g+, digg......rồi đến like fb, bây giờ mình muốn nó là share fb như trên skin mobile, ai biết thì giúp mình nhé. (BIM34) Image meta tag 1.0.2.zip
  41. 1 point
    Tắt đi bật lại nó hoạt động rồi Chị Còn cái share trên skin PC là nó giống như cái này nè Demo là share fb chứ không phải Like fb: [Hidden Content]
  42. 1 point
    Lang thang ở các diễn đàn cho xenforo với vbb, thấy họ có 1 cách tăng tốc cho diễn đàn bằng cách dùng PHP Fast Cache, thấy có thể áp dụng được cho IPB nên mình viết về đây chia sẽ cho các bạn. What is PHP Fast Cache ? * Qua tìm hiểu ta có thể hiểu đơn giản như sau PHP Fast Cache là gì? Yêu cầu sử dụng PHP Fast Cache Bây giờ là cách tích hợp Php Fast cache vô IPB, chỉ có 2 bước: 1. Download file php_fast_cache.zip upload lên ngang hàng với index.php của IPB 2. Mở index.php của IPB, tìm define( 'IPB_THIS_SCRIPT', 'public' ); Thêm bên trên include('php_fast_cache.php'); Bây giờ các bạn có thể tự kiểm chứng xem . Tốc độ load trang có khá hơn không nhé Nguồn: [Hidden Content]
  43. 1 point
    Dành cho các bạn nào đang xài ipb 3.4.3 mà nâng cấp lên 3.4.4 nhưng skin chưa hỗ trợ, bạn theo hướng dẫn này để chỉnh sửa cho phù hợp mà ko cần phải chờ skin update. (màu đỏ là xóa đi, màu xanh là thêm vào) ipb_template_diff_343_344.zip
  44. 1 point
    Tự động lấy hình ảnh đầu tiên từ bài viết (bao gồm cả hình đính kèm) sau đó thêm nó vào meta tag "og:image". Như vậy khi bạn chia sẽ bài viết lên facebook hay các mạng xã hội khác nó sẽ có hình ảnh đó làm screenshot thay vì cái hình meta_image.png cố định của IPB. (BIM34)_Image_meta_tag_1.0.2.zip (BIM33)_Image_meta_tag_1.0.1.zip
  45. 0 points
    Cho mình hỏi tại sao install xong rồi, đến lúc login thì bị lỗi? Mình thử reg thêm nick nhưng login vẫn lỗi domain-name/index.php?app=core&module=global&section=login&do=process
×