Skocz do zawartości

Blog IPSBeyond.pl

  • wpisy
    63
  • komentarzy
    14
  • wyświetleń
    108846

O blogu

Blog poświęcony wszystkiemu temu co związane z IPS Communiity Suite (dawniej IP.Board) oraz z funkcjonowaniem tego forum

Wpisy w tym blogu

Spanner

Dziś pragnę się z Wami podzielić pierwszymi informacjami z nadchodzącej wersji (SD) Sales Portal Pro 2.3.0. Są to restrykcje. Kto używał tej aplikacji jeszcze dla IP.Board 3 zapewne pamięta tę funkcjonalność. W nowej odsłonie jednakże trochę się pozmieniało.

Czym są restrykcje i jak działają?

Restrykcje to nic innego jak ograniczenia, które nakładają na użytkowników pewne wymogi. Przykładowo jeśli chcemy, aby na naszej giełdzie mogli sprzedawać tylko użytkownicy, którzy napisali więcej niż 100 postów i zarejestrowali się przynajmniej rok temu na forum, to ustawiamy następujące restrykcje:

  • W zakładce System w polu Member joined wpisujemy 365 i wybieramy z select boxa opcję "more than" (więcej niż)
  • W zakładce Forums w polu Member posts wpisujemy 100 i także wybieramy opcję "more than"

Jak to działa?

Przy próbie dodania oferty (zarówno kliknięcie buttona dodaj ofertę jak i wybranie z szybkiego menu utwórz ofertę) sprawdzane jest:

  • czy istnieją aktywne restrykcje?
  • czy jakieś aktywne restrykcje odnoszą się do grupy aktualnie zalogowanego użytkownika?

Jeśli oba powyższe stwierdzenia są poprawne, sprawdzane są kryteria jakie ustawiliśmy. W naszym przypadku jest to data dołączenia i liczba zatwierdzonych postów. Jeśli użytkownik nie spełni któregoś z warunków zostanie wyświetlony komunikat błędu, który definiujemy podczas tworzenia restrykcji.

Lista restrykcji w acp

Lista restrykcji jest stosunkowo prosta. Zawiera nazwę restrykcji, która ma informować administratora co to jest za grupa restrykcji oraz status (czy restrykcje są aktywne czy nie).

Sales Portal Pro - acp - restrictions list.png

Formularz w acp

Formularz dodawania restrykcji może się różnić w zależności od tego, jakie aplikacje posiadamy. Każdy będzie posiadał na pewno 3 zakładki: Basic settings, (SD) Sales Portal Pro oraz System. Jeśli będziemy posiadać galerię, blog lub kalendarz, będziemy mieć dodatkowe możliwości wprowadzenia ograniczeń.

Niektóre aplikacje, jak np. (SD) Sales Portal Pro, Forums, Downloads, Gallery posiadają dodatkowo możliwość ograniczonego sprawdzania.

Ograniczone sprawdzanie to nic innego jak to, że wybrane restrykcje będą sprawdzane tylko w wybranych kategoriach. Przykładowo, chcemy aby możliwe dodawanie nowych ofert, ale tylko jeśli użytkownik posiada mniej niż 3 aktywne oferty w kategoria X, Y, Z. Wybieramy zatem te kategorie i ustawiamy odpowiednią ilość aktywnych ofert.

Sales Portal Pro - acp - restrictions form - basic.pngSales Portal Pro - acp - restrictions form - sales portal pro.pngSales Portal Pro - acp - restrictions form - system.pngSales Portal Pro - acp - restrictions form - forums.pngSales Portal Pro - acp - restrictions form - calendar.pngSales Portal Pro - acp - restrictions form - blog.pngSales Portal Pro - acp - restrictions form - downloads.pngSales Portal Pro - acp - restrictions form - gallery.png

Bonus

Na koniec mały bonus czyli film, na którym możecie zobaczyć jak działają restrykcje.

 

Spanner

Ostatnią nowością jaka ukaże się w (SD) Company Directory 3.4.0 jest system newsów.

Do czego służy system newsów?

System newsów powstał z myślą udostępnienia użytkownikom, którzy posiadają profil w katalogu miejsca, w którym będą mogli zaprezentować jakieś nowości/promocje ze swojego profilu. Najprostszym zastosowaniem tego systemu jest poinformowanie klientów, że firma X otworzyła nowy oddział w miejscowości Y.

Jak to działa

Zasadniczo działanie jest bardzo proste. W panelu administratora możemy włączyć lub wyłączyć system newsów.

Natomiast jako użytkownik wybieram z "szybkiego menu" tworzenie newsów. Następnie w formularzu wybieramy, dla którego z naszych profili chcemy dodać news.

Company Directory - News - Choose company profile.png

Następnie jesteśmy przenoszeni do właściwego formularza, w którym mamy do uzupełnienia tylko dwa pola: Tytuł newsa i jego treść.

Company Directory - News - form.png

Po zatwierdzeniu news jest dodawany do systemu.

Gdzie się będą wyświetlać newsy

Oczywiście każdy news posiada swoją stronę, na której widzimy tytuł, datę dodania newsa, treść newsa oraz krótką metryczkę profilu, który jest powiązany z tym newsem.

Company Directory - News - details.png

Dodatkowo istnieje strona, która zawiera spis wszystkich newsów, które są dodane w systemie. Lista jest stronicowana.

Company Directory - News - list.png

Ponadto mamy możliwość umieszczenia w dowolnym miejscu na forum widgetu pionowego lub poziomego, który będzie wyświetlać najnowsze newsy.

Company Directory - News - widgets.png

Plany na przyszłość

W kolejnych wersjach planuję rozwinąć system newsów o kolejne funkcjonalności, między innymi dodać je do wyników wyszukiwania na forum, stworzyć dla nich mapę witryny google oraz prezentować je w widoku profilu danej firmy.

Spanner

Kolejną nowością w  (SD) Company Directory 3.4.0 są firmy w pobliżu.

Jak to działa?

Funkcjonalność ta polega na tym, że w pierwszej kolejności udostępniamy przeglądarce naszą lokalizację lub podajemy ją w formularzu. Następnie możemy sprecyzować dodatkowe kryteria jak specjalizacja, państwo, województwo, miasto, kategoria i szukamy. Jako dodatkowe kryterium wybieramy odległość jaka nas interesuje.

Company Directory - nearby companies.png

Spanner

W poprzednim wpisie ((SD) Company Directory 3.4.0 - Zmiany w wyglądzie) wspominałem o jednej z ciekawych nowości w najnowszej odsłonie (SD) Company Directory 3.4.0, jaką są media społecznościowe.

Dlaczego zrobiłem to w ten sposób?

Oczywiście część z Was zadaje sobie pytanie po co taka funkcjonalność, skoro można ją osiągnąć używając pól dodatkowych w aplikacji. Oczywiście, że można i wiele osób zapewne tak zrobiło, ale poczynione zmiany mają na celu pewną standaryzację.

Po pierwsze wszystkie media społecznościowe są zebrane w jednej strukturze i w jednym miejscu, dzięki czemu łatwiej możemy tym zarządzać.

Po drugie mając taki podział (osobno pola dodatkowe, osobno media społecznościowe) mamy więcej możliwości rozwojowych w przyszłości.

Po trzecie możemy umieścić linki wraz z ikonkami do mediów społecznościowych danej firmy w dowolnym miejscu i nie będzie to wymagało od nas żadnych dodatkowych prac ani zmian w kodzie. Aby wstawić ikony linkujące do danych profili wystarczy umieścić w szablonie taki oto kod:

{$profile->social|raw}

 

Company Directory - Form - Social Media.png

Company Directory - profile view.png

Company Directory - ACP - Social Media - list.png

Company Directory - ACP - Social Media - form.png

Spanner

W ostatnich tygodniach ciężko pracowałem nad nową odsłoną (SD) Company Directory 3.4.0, która ukaże się już niedługo.

Ten wpis w całości poświęcony będzie zmianom w wyglądzie, jakie zaszły w nowej wersji aplikacji.

Wygląd strony głównej oraz kategorii

Podobnie jak w poprzednich wersjach, tak i w tej, w ustawieniach w panelu administratora możemy wybrać sposób prezentowania wpisów w kategorii. Wybór mamy pomiędzy kafelkami i listą. Nowością w wersji 3.4.0 jest taki sam wybór, ale dla strony głównej aplikacji. Obydwa wyglądy zostały odświeżone i w tej chwili prezentują się w ten sposób:

Company Directory - Grid view.pngCompany Directory - List view.png

Wygląd formularza

Formularz dodawania/edycji został gruntownie przebudowany i podzielony na poszczególne częśći. Po pierwsze są to zakładki, które zostały wprowadzone ze względu na dodanie nowych funkcjonalności, którymi są media społecznościowe oraz godziny otwarcia (szerzej o nowych funkcjonalnościach napiszę w osobnych wpisach).

Dodatkowo "stara" część formularza została przebudowana i czytelniej podzielona na poszczególne fragmenty, dzięki czemu łatwiej można będzie się odnaleźć w samym formularzu.

Company Directory - Form - Basic.pngCompany Directory - Form - Hours - close.pngCompany Directory - Form - Hours - open.pngCompany Directory - Form - Social Media.png

Wygląd listy cen

Lista cen nie przeszła jakiś rewolucyjnych zmian. Była to bardziej ewolucja tego, co już było. Zmianie uległ wygląd poszczególnych bloków, powiększona została czcionka określająca cenę pakietu oraz lekko zmodyfikowano kolory reprezentujące poszczególne sekcje bloku, aby ujednolicić wygląd z pozostałą częścią aplikacji.

Company Directory - Price list.png

Wygląd profilu

Największe zmiany dotknęły profilu. Tutaj zrezygnowałem całkowicie z możliwości wyboru wyglądu. Przebudowana została całościowo struktura strony wprowadzając powiew świeżości i nowe funkcjonalności (wspomniane wcześniej media społecznościowe oraz godziny otwarcia). Dodatkowo nowością jest też integracja z aplikacją (SD) Sales Portal Pro.

Company Directory - profile view.png

Spanner

Jedną z nowości jaka zagościła w (SD) Newsletter 2 jest autoresponder.

 

Czym tak na prawdę jest Autoresponder?

Autoresponder, jak sama nazwa wskazuje, jest automatyczną wiadomością wysyłaną przez system w określonych sytuacjach. W przypadku aplikacji (SD) Newsletter mamy do wyboru dwa rodzaje autoresponderów:

  • Cykliczny, gdzie wysyłka odbywa się co tydzień, co miesiąc, co rok, ogólnie co określony przedział czasu
  • Pojedynczy autoresponder. Ten natomiast dzieli się jeszcze na dwa typy:
    • Wysyłany niezwłocznie po zapisaniu się do newslettera
    • Wysyłany z pewnym opóźnieniem (opóźnienie możemy ustawić) po zapisaniu się do newslettera.

Więcej na temat możliwości konfiguracyjnych autorespondera dowiesz się oglądając poniższy film:

 

 

 

Spanner

Zgodnie z obowiązującymi przepisami prawa każde forum dyskusyjne powinno pozwalać użytkownikom usunąć ich konto.

Standardowo jest to dość uciążliwa sprawa, ponieważ wymaga aby użytkownik wysłał prośbę do administratora, administrator musi tego maila przeczytać, wejść do panelu, odnaleźć użytkownika itp., itd. Dodatkowo nie jest jasno napisane, jak ma taki mail wyglądać i niekiedy wymagana jest odpowiednia formuła takiej wiadomości.

Tutaj z pomocą przychodzi aplikacja (SD) Delete Account, która niektórym z Was może być już znana, ponieważ jest dostępna jeszcze dla wersji IPB3. Powstała nowa odświeżona wersja dedykowana IPS Community Suite 4.

Jak działa aplikacja?

  1. Użytkownik wchodzi na odpowiednią podstronę, na której potwierdza chęć usunięcia konta
  2. Na maila otrzymuje potwierdzenie chęci usunięcia konta, w którym znajduje się link. Kliknięcie w link potwierdza w 100%, że chce usunąć konto i że dokonał tego świadomie, a nie przez przypadek
  3. Po potwierdzeniu chęci usunięcia konta, administrator dostaje powiadomienie, że w kolejce oczekują konta na usunięcie.
  4. Po zalogowaniu się do panelu administratora i przejściu na specjalną podstronę administrator od razu widzi konta, które oczekują na usunięcie i od razu może podjąć decyzję, czy usuwa te konta lub nie.

Poniżej znajduje się kilka screenów obrazujących wygląd aplikacji:

(SD) Delete Account - settings.png

(SD) Delete Account - stats.png

(SD) Delete Account - to confirm.png

(SD) Delete Account.png

(SD) Delete Account - confirmed.png

(SD) Delete Account - Deleted membes.png

(SD) Delete Account - Requests management.png

Spanner

Czasami zdarza się, że użytkownicy na forum posiadają nieaktualne adresy e-mail, a my na nasze skrzynki główne forum dostajemy masę zwrotek typu "adres nie istnieje". Do tej pory nie było na to rozwiązania, bo jak skontaktować się z takim użytkownikiem, skoro jego e-mail nie działa?

Od dziś to się zmieni. Z pomocą przychodzi aplikacja (SD) Outdate Emails, która pozwala oznaczyć takie użytkownika w panelu administratora.

Co daje oznaczenie nieaktualnego adresu e-mail?

  • Do użytkownika nie będą wysyłane żadne e-maile z forum
  • Po wejściu na forum użytkownikowi będzie wyświetlany za każdym razem popup z informacją, że ma nieaktualny adres
  • Informacja ta zniknie dopiero, gdy użytkownik zmieni swój adres

Pozostałe Funkcjonalności

  • Historia zmian adresów e-mail wszystkich użytkowników na forum
  • Podczas oznaczania nieaktualnego adresu e-mail możemy zmienić grupę użytkownikowi (do której wróci automatycznie po zmianie adresu e-mail)
  • Całkowita blokada wysyłki e-maili z forum na zablokowane adresy e-mail
  • Popup z informacją o nieaktualnym adresie e-mail

(SD) Outdate Emails - Import emails.png

(SD) Outdate Emails - Member edit.png

(SD) Outdate Emails - Outdated emails.png

(SD) Outdate Emails - Statistics.png

(SD) Outdate Emails - Frontend.png

(SD) Outdate Emails - History email change.png

Spanner

(SD) Mass PM

Każdy z nas używał przynajmniej raz prywatnych wiadomości na forum, czy to w postaci zadawania pytań komuś, czy to otrzymując jakieś informacje od administratora.

Aplikacja z zasady działa w bardzo prosty sposób. Administrator ustala pewne kryteria jak grupy odbiorców. Dodatkowo możemy wybrać użytkowników, którzy mają określoną ilość postów lub dołączyli do serwisu w określonym przedziale czasu. Możemy też wybrać użytkowników, którzy w określonym przedziale czasu byli dostępni na forum. Wysyłka wiadomości następuje w sposób automatyczny w tle, w związku z czym nie jest wymagana żadna dodatkowa aktywność od nas.

(SD) Mass PM pozwala także wysłać ponownie wiadomość do tych samych odbiorców.

Poniżej kilka screenów z aplikacji

 

(SD) Mass PM - form filtering open.png

(SD) Mass PM - lists.png

(SD) Mass PM - overview.png

(SD) Mass PM - form additional.png

(SD) Mass PM - form basic.png

(SD) Mass PM - form filtering close.png

Spanner

Dziś mam dla Was kolejną odsłonę wideotutorialu  dotyczącego (SD) My Places. W dzisiejszym odcinku mam przyjemność zaprezentować najnowszą funkcjonalność tzn. Dodawanie trasy w postaci pojedynczego punktu.

Czasem może być tak, że nie planujesz trasy, ale chcesz pokazać jakieś ciekawe miejsce. Używając najnowszej odsłony aplikacji My Places możesz tego dokonać kilkoma kliknięciami myszki. Nie trzeba tworzyć żadnej sztucznej trasy, w tym przypadku wystarczy kliknąć na mapie.

 

Spanner

Większość aplikacji dla IPS Community Suite 4 posiada możliwość tworzenia dodatkowych pól. Aplikacja (SD) Company Directory 3, także posiada taką możliwość, a dodatkowo pozwala na przypisanie konkretnych pól do konkretnych kategorii. Chcesz wiedzieć jak to zrobić? Nic prostszego. W dzisiejszym wpisie odpowiem Ci na to pytanie.

Czym jest (SD) Company Directory?

Niestety (albo na szczęście) aplikacja (SD) Company Directory nie posiada konkretnej definicji czym tak naprawdę jest. Dlaczego? Odpowiedź jest dość prosta - ta aplikacja ma tak wiele zastosowań, że ciężko ją przyporządkować do jednej.

Pierwotnie aplikacja powstała jako katalog profili firmowych, zorganizowanych w kategorie. Szybko jednak się okazało, że możliwości jest więcej. Dzięki katalogowi możecie tworzyć zarówno prostą bazę firm w jakimś rejonie np. w Polsce. Po bardziej skomplikowane np. posegregowane restauracje, posiadające swoje specjalizacje (kuchnia chińska, burgery, itp).

Aplikacja pozwala stworzyć profile zarówno z fizyczną lokalizacją na mapie, jak i z pominięciem mapy. Możemy się "meldować" pod tym adresem, dodawać opinie, komentować takie wpisy. Dodatkowo każdy profil firmy może posiadać lokalizacje dodatkowe.

Jak stworzyć pole dodatkowe i przypisać je do kategorii

Nic prostszego. Sam proces tworzenia takich pól jest dość prosty i sprowadza się do kilku kliknięć. Zobaczcie z resztą sami na poniższym filmie.

 

Spanner

Dziś pokażę Wam jaki prosty jest zapis do newslettera dzięki aplikacji (SD) Newsletter. Nie wymaga to od nas żadnych wymagających rzeczy. Wystarczy podać nazwę, adres e-mail i opcjonalnie wybrać kategorie, do których chcemy się zapisać.

Czym jest aplikacja (SD) Newsletter?

(SD) Newsletter jest aplikacją pozwalającą na wysyłanie newsletterów z poziomu forum. Aplikacja w swojej prostocie posiada bardzo duże możliwości. Dzięki tej aplikacji możemy wysyłać zarówno cykliczne jak i pojedyncze newslettery do osób, które się zapisały do naszej bazy. Zapisać mogą się za równo użytkownicy forum jak i goście odwiedzający naszą stronę. Każdy wysłany newsletter pozwala śledzić ilość otwarć mailingu - zarówno unikalne odsłony jak i łączne. Dodatkowo każdy link w newsletterze jest śledzony, dzięki czemu możemy w statystykach sprawdzić, w które treści użytkownicy klikają najchętniej.

(SD) Newsletter posiada także możliwość zachęcania użytkowników do zapisu poprzez popup wyświetlający się po wejściu na stronę.

Jak zapisać się do newslettera?

Jak pokazuje poniższy filmik, zapis do newslettera jest bardzo prosty. Zalogowany użytkownik musi tylko zaakceptować regulamin, natomiast gość musi podać jeszcze adres e-mail oraz nazwę. Dodatkowo możemy wybrać jeszcze newslettery do jakich chcielibyśmy się zapisać.

 

Spanner

Używasz aplikacji (SD) My Places i chciałbyś zaimportować z pliku csv nowe miejsca? Nic prostszego w tym wpisie zobaczysz jakie to proste.

Czym jest aplikacja (SD) My Places?

My Places jest zaawansowaną aplikacją pozwalającą społeczności dzielić się ciekawymi trasami. Aplikacja jest idealnym rozwiązaniem dla forów o tematyce motocyklowej, rowerowej czy samochodowej. Niemniej jednak zastosowań jest dużo więcej. Podstawową funkcjonalnością aplikacji jest dodawanie tras. Możemy to zrobić na kilka sposobów: wyznaczając trasę na mapie google z punktu A do punktu B, zaimportować istniejącą już trasę (tutaj możemy importować trasy z kilku rodzajów plików) lub wkleić link do google maps i aplikacja sama stworzy nam trasę. Dodatkowo taką trasę możemy uzupełnić o opis, czas jaki jest potrzebny na przejechanie jej, zdjęcia z trasy oraz kiedy ją odbyliśmy.

Oczywiście administrator może stworzyć dodatkowe pola, które jeszcze bardziej uatrakcyjnią taki wpis. Mając już taki wpis użytkownicy mogą komentować, oceniać trasę a także zaznaczać, że odbyliśmy, nie odbyliśmy lub chcieli byśmy odbyć trasę.

No dobrze, ale co zrobić jeśli mamy plik csv z listą setek tras? Dodawanie ich ręcznie przyprawi nas o ból głowy. Na to pytanie odpowiedzią jest poniższa część wpisu.

Jak zaimportować miejsca?

Cały proces importowania nowych miejsc obrazuje poniższy film.

 

 

 

 

Spanner

W ostatnim czasie robiłem aktualizację dość dużego forum z wersji IP.Board 3 do wersji IPS Community Suite 4. Oczywiście nie obyło się bez problemów. Podstawowym problemem jak zawsze przy aktualizacji są polskie znaki.

Jeśli forum jest w latin2 to nie ma z tym problemów bo wiadomo, że trzeba je przekonwertować do utf-8. Ale co zrobić jeśli nasze forum w wersji 3 miało kodowanie utf, a aktualizacja stwierdza, że to nie jest utf i trzeba dokonać konwersji? W przypadku małego forum możemy oczywiście próbować wykonać taką konwersję, ale z doświadczenia wiem, że nie rzadko kończy się to tym, że zamiast polskich znaków diakrytycznych mamy krzaczki  w postaci np. znaków zapytania.

Metoda, którą przestawiam poniżej jest dość prosta, choć trochę się naszukałem i nakombinowałem aby to zrobić. Niestety aby wszystko działało prawidłowo musimy mieć dostęp do bazy danych z poziomu SSH.

SELECT CONCAT("ALTER TABLE ",TABLE_SCHEMA,".",TABLE_NAME," CHARACTER SET utf8 COLLATE utf8_general_ci; ", "ALTER TABLE ",TABLE_SCHEMA,".",TABLE_NAME," CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci; ") AS alter_sql FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'NAZWA_BAZY_DANYCH' INTO OUTFILE '/tmp/database.txt';

Zapytanie to tworzy listę zapytań typu ALTER TABLE..., które zmieniają kodowanie tabel z utf8_genral_ci na utf8_unicode_ci dla bazy danych podanej w NAZWA_BAZY_DANYCH.

Następnie musimy uruchomić z poziomu SSH plik, który powstanie w wyniku tego zapytania i koniec. Możemy dokonać aktualizacji forum bez żadnej dodatkowej konwersji.

 

Spanner

Live streams jest aplikacją dla IPS Community Suite 4, która pozwala prezentować streaming gier z portali: Twitch.tv, Beam.pro i Hitbox.tv. 

Funkcjonalności aplikacji Live streams

Oczywiście do podstawowych funkcjonalności należy dodawanie strumieni przez użytkowników. Sam proces dodawania odbywa się w dwojaki sposób. Możemy albo podać nasz login w serwisie, albo link do naszego profilu. Dodatkowo musimy wybrać platformę, z której dodajemy strumień, oraz jeśli chcemy możemy dodać jakiś własny opis.

System dodatkowo pozwala na zakup płatnego wyróżnienia kanału. Płatność realizowana jest przez aplikację Store (dawniej IP.Nexus).

Sam widok profilu strumienia możemy dodatkowo komentować (jeśli administrator włączył taką opcję). Na stronie znajduje się także chat danego systemu strumienia. Administrator może wybierać jego położenie (nad playerem, obok playera, poniżej playera).

Oczywiście oprócz tego są jeszcze liczne widgety pokazujące aktywności z systemu oraz możliwość automatycznego tworzenia tematów po dodaniu strumienia.

Wygląd aplikacji Live streams

Poniżej przedstawiam kilka screenów z wyglądu aplikacji

Stream-view-right.png

grid-view.png

Live-stream-my-streams.png

Live-stream-main-page-new.png

Live-stream-Games.png

Live-stream-home-block.png

Live-stream-Game-Streamers.png

Stream-view-bottom.png

Stream-form.png

topic-view.png

Stream-view-top.png

List-view.png

Live-stream-additional-filters.png

Live-stream-filter-by-platform.png

Spanner

Praktycznie każda aplikacja, którą piszemy, będziemy pisać w przyszłości będzie potrzebować systemu komentarzy. Nie ważne czy jest to aplikacja typu moje trasy, blog, platforma z ogłoszeniami. Zawsze dążymy do tego by użytkownik wchodził w jakąś interakcję z dodaną treścią. Najłatwiej jest to osiągnąć właśnie przez system komentarzy.

Co musimy zrobić?

Aby uruchomić system komentarzy w naszej aplikacji musimy wykonać 3 kroki:

  1. Dodać odpowiedni kod do klasy elementu, który będzie przetrzymywał komentarze
  2. Stworzyć odpowiednią strukturę tabeli
  3. Stworzyć model klasy komentarzy

Ale zacznijmy od początku.

Zmiana w pliku

Opiszę tutaj to na przykładzie jednej z moich aplikacji. Aplikacja znajduje się w przestrzeni nazw IPS\livestreams a elementem (modelem), który będzie przetrzymywać komentarze jest Stream. Zatem Otwieramy plik: /applications/livestreams/sources/Stream/Stream.php i wklejamy w nim wewnątrz klasy:

	/**
	 * @brief	Comment Class
	 */
	public static $commentClass = 'IPS\livestreams\Stream\Comment';

Struktura bazy danych

Tutaj musimy stworzyć dość prostą tabelę a mianowicie:

CREATE TABLE `ibf_livestreams_streams_comments` (
	`comment_id` INT(10) NOT NULL AUTO_INCREMENT,
	`comment_stream_id` INT(10) NOT NULL DEFAULT '0',
	`comment_member_id` MEDIUMINT(8) NOT NULL DEFAULT '0',
	`comment_author` VARCHAR(255) NULL DEFAULT NULL,
	`comment_ip_address` VARCHAR(46) NULL DEFAULT NULL COLLATE 'utf8mb4_unicode_ci',
	`comment_date` INT(10) NULL DEFAULT NULL,
	`comment_append_edit` TINYINT(1) NULL DEFAULT '0',
	`comment_approved` TINYINT(1) NOT NULL DEFAULT '0',
	`comment_text` MEDIUMTEXT NULL COLLATE 'utf8mb4_unicode_ci',
	`comment_edit_time` INT(10) NOT NULL DEFAULT '0',
	`comment_edit_name` VARCHAR(255) NULL DEFAULT NULL COLLATE 'utf8mb4_unicode_ci',
	PRIMARY KEY (`comment_id`),
	INDEX `comment_parent_id` (`comment_stream_id`),
	INDEX `comment_author_id` (`comment_member_id`)
);

Idąc od początku:

  • comment_id - Id komentarza w bazie
  • comment_stream_id - Id elementu, którego komentarz ma dotyczyć
  • comment_member_id - Id autora komentarza
  • comment_author - Nazwa autora
  • comment_ip_address - Adres IP użytkownika
  • comment_date - Data dodania wpisu
  • comment_approved - Czy komentarz jest zatwierdzony
  • comment_text - Treść komentarza
  • comment_edit_time - Czas, kiedy komentarz był edytowany

Model klasy komentarzy

Plik musi nosić nazwę Comment.php i znajdować się w katalogu /applications/livestreams/sources/Stream/. A jego kod wygląda następująco:

<?php
/**
 * SolutionrDEVs Application
 * (SD) Live Streams
 *
 * @brief       Comment model
 * @author      Dawid Baruch <dawid.baruch@solutiondevs.pl> <a href='http://www.solutiondevs.pl'>SolutionDEVs</a>
 * @copyright   (c) 2005 - 2016 SolutionDEVs
 * @package     SolutionDEVs Apps
 * @subpackage  (SD) Live Streams
 * @link        http://www.solutiondevs.pl
 * @link        http://www.ipsbeyond.pl
 * @since       25 Aug 2016
 * @version     2.0.0
 */

namespace IPS\livestreams\Stream;

/* To prevent PHP errors (extending class does not exist) revealing path */
if( !defined( '\IPS\SUITE_UNIQUE_KEY' ) )
{
	header( ( isset( $_SERVER[fusion_builder_container hundred_percent="yes" overflow="visible"][fusion_builder_row][fusion_builder_column type="1_1" background_position="left top" background_color="" border_size="" border_color="" border_style="solid" spacing="yes" background_image="" background_repeat="no-repeat" padding="" margin_top="0px" margin_bottom="0px" class="" id="" animation_type="" animation_speed="0.3" animation_direction="left" hide_on_mobile="no" center_content="no" min_height="none"][ 'SERVER_PROTOCOL' ] ) ? $_SERVER[ 'SERVER_PROTOCOL' ] : 'HTTP/1.0' ) . ' 403 Forbidden' );
	exit;
}

/**
 * Stream Comment Model
 */
class _Comment extends \IPS\Content\Comment implements \IPS\Content\EditHistory, \IPS\Content\ReportCenter, \IPS\Content\Hideable, \IPS\Content\Reputation, \IPS\Content\Searchable, \IPS\Content\Embeddable
{
	/**
	 * @brief	[ActiveRecord] Multiton Store
	 */
	protected static $multitons;
	
	/**
	 * @brief	[Content\Comment]	Item Class
	 */
	public static $itemClass = 'IPS\livestreams\Stream';
	
	/**
	 * @brief	[ActiveRecord] Database Table
	 */
	public static $databaseTable = 'livestreams_streams_comments';
	
	/**
	 * @brief	[ActiveRecord] Database Prefix
	 */
	public static $databasePrefix = 'comment_';
	
	/**
	 * @brief	Database Column Map
	 */
	public static $databaseColumnMap = array(
		'item'				=> 'stream_id',
		'author'			=> 'member_id',
		'author_name'		=> 'author',
		'content'			=> 'text',
		'date'				=> 'date',
		'ip_address'		=> 'ip_address',
		'edit_time'			=> 'edit_time',
		'edit_member_name'	=> 'edit_name',
		'edit_show'			=> 'append_edit',
		'approved'			=> 'approved'
	);
	
	/**
	 * @brief	Application
	 */
	public static $application = 'livestreams';
	
	/**
	 * @brief	Title
	 */
	public static $title = 'livestreams_streams_comment';
	
	/**
	 * @brief	Icon
	 */
	public static $icon = 'video-camera';
	
	/**
	 * @brief	Reputation Type
	 */
	public static $reputationType = 'comment_id';
	
	/**
	 * @brief	[Content]	Key for hide reasons
	 */
	public static $hideLogKey = 'livestreams-scomment';
	
	/**
	 * Get URL for doing stuff
	 *
	 * @param	string|NULL		$action		Action
	 * @return	\IPS\Http\Url
	 */
	public function url( $action=NULL )
	{
		return parent::url( $action )->setQueryString( 'tab', 'comments' );
	}
}

I ogólnie to tyle, aby dodać komentarze do naszej aplikacji

Spanner

Zapewne zauważyłeś, że na blogu staram się poruszać tematykę stricte związaną z programowaniem dodatków do IPS Community Suite. Pod tym względem forma bloga nie zmieni się, ale mam za to dla Ciebie małą niespodziankę.

W najbliższym czasie rozpocznę serię wpisów, które będą stanowić dość sporą dawkę wiedzy jeśli chodzi o programowanie. Muszę jednak zaznaczyć na samym wstępnie, że nie będę uczył podstaw programowania w PHP. Tę tajemną wiedzę, musisz zgłębić sam.

Czego możesz się spodziewać?

Tworzenie dodatków jest dość skomplikowanym procesem, niemniej jednak postaram się opisywać różne sztuczki i rozwiązania problemów, za sprawą których powinno Ci być łatwiej. Jednym z takich wpisów jest ostatni tekst: oEmbed wordpressowe na forum

Czy nauczę się tworzyć dodatki?

Tutaj odpowiedź nie jest taka prosta, bo to wszystko zależy od Twoich umiejętności. Nie nauczę Cię tak, jak w szkole nas uczono czytać czy pisać, ale postaram się nakreślić w stopniu jak najbardziej zrozumiałym cały proces. Natomiast to, co zrobisz z tak zdobytą wiedzą, zależy już tylko od Ciebie.

Spanner

oEmbed wordpressowe na forum

Osadzanie treści przy użyciu standardu oEmbed jest bardzo fajnym rozwiązaniem. Dzięki temu możemy podając link np. do facebooka zobaczyć ten wpis na naszej stronie. Facebook oczywiście nie jest jedynym takim serwisem. Takie osadzanie treści możemy zrealizować chociażby dla pinteresta, youtube, instagrama i innych.
W przypadku facebooka wyglądało by to mniej więcej tak:

IPS Community Suite oczywiście także pozwala na takie osadzanie treści, ale co w przypadku, gdy chcemy osadzić wpis z wordpressa? Niestety tutaj byliśmy skazani na porażkę ponieważ domyślnie nie ma takiej możliwości.

Jeśli jednak chcielibyśmy mieć taką możliwość musimy napisać prosty hook, który rozszerza klasę \IPS\Text\Parser i nadpisać metodę oembedServices przykładowo w taki sposób:

    /**
	 * Get OEmbed Services
	 * Implemented in this way so it's easy for hook authors to override if they wanted to
	 *
	 * @see		<a href="http://www.oembed.com" data-mce-href="http://www.oembed.com">oEmbed</a>
	 * @return	array
	 */
	protected static function oembedServices()
    {
        $return = parent::oembedServices();
        
        $return[fusion_builder_container hundred_percent="yes" overflow="visible"][fusion_builder_row][fusion_builder_column type="1_1" background_position="left top" background_color="" border_size="" border_color="" border_style="solid" spacing="yes" background_image="" background_repeat="no-repeat" padding="" margin_top="0px" margin_bottom="0px" class="" id="" animation_type="" animation_speed="0.3" animation_direction="left" hide_on_mobile="no" center_content="no" min_height="none"][ 'ipboard.ninja' ] = 'http://ipboard.ninja/wp-json/oembed/1.0/embed';
        
        return $return;
    }

A co jeśli nie czujemy się zbytnio na siłach lub nie mamy czasu na tworzenie własnych dodatków? Tutaj z pomocą przychodzi nam dodatek (SD) oEmbed.

Ustawienia dodatku (SD) oEmbed

Ustawienie dodatku jest bardzo proste i sprowadza się do podania dwóch rzeczy: domeny oraz linku, który generuje kod oEmbed dla danej domeny. Przykładowo:

ipboard.ninja;http://ipboard.ninja/wp-json/oembed/1.0/embed

SD-oEmbed-settings.png

Spanner

Czasami w aplikacji, którą piszemy potrzebujemy zrobić szybki podgląd zawartości. Przykładem takiego miejsca jest chociażby lista tematów w danym forum, gdzie po najechaniu myszką na tytuł tematu po chwili pokazuje nam się podgląd pierwszego i ostatniego posta w temacie.Podgląd taki jest efektem bardzo prostym do osiągnięcia. Pokażę to na przykładzie mojej nowej aplikacji.

W widoku, w miejscu gdzie jest link do wpisu dodajemy coś takiego:

data-ipsHover data-ipsHover-target='{$row->url()->setQueryString( 'preview', 1 )}' data-ipsHover-timeout='1.5'

Czyli całość wygląda np. tak:

<a href="{$row->url()}" data-ipsHover data-ipsHover-target='{$row->url()->setQueryString( 'preview', 1 )}' data-ipsHover-timeout='1.5'>{$row->name}</a>

Następnie w kontrolerze dla takiego żądania musimy stworzyć odpowiedni kod, który obsłuży takie żądanie. W moim przypadku kod jest umieszczony w metodzie manage() i zawiera bardzo prosty kod:

        if( \IPS\Request::i()->isAjax() && \IPS\Request::i()->preview )
        {
            \IPS\Output::i()->sendOutput( \IPS\Theme::i()->getTemplate( 'core' )->ticketHover( $this->ticket ) );
            return;
        }

I to jest w sumie tyle. Jak będzie wyglądać podgląd i co będziecie w nim prezentować zależy już tylko od Was.

Spanner

IPS Community Suite domyślnie na listingach tabelarycznych takich jak np. lista tematów w danym forum wyświetla 25 rekordów na stronę. Pisząc własną aplikację możemy tą liczbę bardzo prosto zmienić, ale co w przypadku, gdy chcemy ją zmienić właśnie dla tematów?Tutaj niestety musimy już dokonać zmiany globalnie i trzeba edytować plik: /system/Helpers/Table/Table.php

W którym musimy znaleźć następujący kod:

    /**
      * @brief    Number of records to show
      */
     public $limit = 25;

W przypadku, gdy tworzymy własną aplikację i użyjemy kodu:

$table = new \IPS\Helpers\Table\Content( ... );

wystarczy dodać kod:

$table->limit = X;

gdzie oczywiście X to pożądana wartość

Spanner

Wsparcie aplikacji

Jak wiecie (albo i nie) postanowiłem ograniczyć ilość aplikacji mojego autorstwa dla IPS Community Suite 4 do raptem kilku. Spowodowane jest to kilkoma dość istotnymi czynnikami. Między innymi spowodowane jest to brakiem wystarczającego czasu, który mógłbym przeznaczyć na rozwój większej ilość dodatków.

Możliwe, że to ulegnie zmianie, ale na chwilę obecną te kilka aplikacji posiada dość skomplikowane funkcjonalności a wprowadzenie kolejnych tak zaawansowanych niesie za sobą spore nakłady czasowe.

Do tego wszystkiego dochodzą także inne zlecenia na autorskie dodatki, pasja do motocykli, rodzina itp, itd.

Nie mniej jednak postanowiłem napisać kolejną aplikację, tym razem na użytek wewnętrzny. Będzie to spora aplikacja umożliwiająca zarządzanie projektami. Będzie to za równo bugtracker jak i miejsce do zgłaszania nowych funkcjonalności itp, itd. Mam nadzieje, że znacznie ułatwi to wszystkim korzystanie z aplikacji i ułatwi zgłaszanie błędów i propozycji.

Dokładniejszy opis aplikacji wraz ze screenami, opisami funkcjonalności itp opiszę niedługo na łamach bloga.

Spanner

Zgodnie z wcześniejszymi zapowiedziami uruchamiamy nowy cykl publikacji na łamach IPSBeyond.pl.

Na początek zaczynamy od prezentacji w jaki sposób dodawać pola dodatkowe do (SD) Company Directory 3

Zapraszamy także na nasz kanał w serwisie Youtube, gdzie możecie znaleźć wszystkie nasze publikacje

Spanner

Tajemnica hashtagu #sdmp

W ostatnim czasie nasz fanpage na facebooku oraz kanał na twitterze zalewały informacje oznaczone tagiem #sdmp. Zapewne wielu z Was zastanawiało się co to za skrót i o jakiej aplikacji piszę skrycie ją ukrywając. Jak nie trudno się domyśleć początkowe 2 litery czyli sd oznaczają nic inneg jak przedrostek wszystkich moich aplikacji, czyli (SD), które to jest skrótem od SolutionDEVs :)

Inaczej wygląda natomiast sprawa z pozostałymi dwiema literami. MP jest skrótem od My Places. A zatem sdmp to nic innego jak (SD) My Places.

No dobrze, jak już znacie znaczenie skrótu to zapewne ciekawi Was co to za aplikacja i do czego służy. Już spieszę Wam to wszystko wyjaśnić.

(SD) My Places jest aplikacją przeznaczoną na fora, które skupiają się wokół podróżowania (fora motocyklowe, ogólno turystyczne, rowerowe, samochodowe, itp). Aplikacja pozwala nam dodawać różne trasy i miejsca. Na poniższym filmiku możecie zobaczyć jak to mniej więcej wygląda.

Zapraszamy też do subskrybowania naszego kanału w serwisie YouTube.Już niedługo pojawią się tam kolejne publikacje.

Spanner

Duża część z Was chciała być na bieżąco informowana na temat rozwoju aplikacji przy użyciu bloga. Stąd też dzisiaj pierwszy wpis dotyczący prac na nową wersją (SD) Newsletter 2.0.0.

Nowa wersja

W stosunku do poprzedniej wersji w aplikacji nie będzie zbyt wiele zmian. Podobnie jak w przypadku (SD) Company Directory 3 zrezygnuje z supportu premium, który nie cieszył się popularnością. Newsletter podobnie jak katalog firm w jednej z kolejnych wersji trzymają za to zupełnie nową innowacyjną funkcjonalność, która przynajmniej na razie jest spisana tylko w moich notatkach.

W pierwszej odsłonie nie będzie także możliwości tworzenia dynamicznych newsletterów dla dowolnych aplikacji. Początkowo dostępne będą tylko domyślne aplikacje IPS Community Suite, czyli Blog, Sklep, Forum, Strony, Galeria, Kalendarz, Pliki

×