Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Zmień kolejność działów na MPCforum !


Latreso

Rekomendowane odpowiedzi

Opublikowano

//Zawieszenie projektu w związku z pracą nad nowym dodatkiem z większą ilością opcji ;)

 

Witajcie!

 

Od niedawna bawię się dodatkiem do przeglądarki, który pozwala na umieszczanie własnych skryptów javascript na dowolnej stronie.

Tak dla zabawy napisałem prosty kod, który ustawia działy na stronie głównej w dowolny ustalony przez użytkownika sposób!

 

Niestety, jako że skrypty są poprawnie ładowane tylko po załadowaniu całego dokumentu mój projekt będzie ładnie działał tylko przy szybkich połączeniach :(

 

 

Przechodząc do konkretów:

Skrypt jest w BAAAARDZO wczesnej fazie rozwoju, dlatego też ma bardzo ograniczone pole manewru (patrz 'plany'),

Skrypt korzysta z dodatku dla przeglądarki, także:

Niestety, jako że skrypty są poprawnie ładowane tylko po załadowaniu całego dokumentu mój projekt będzie ładnie działał tylko przy szybkich połączeniach :(

 

Galeria:

 

 

9204314443766641092887.png

 

 

 

Instalacja dodatku do przeglądarki:

Mozilla FireFox

Opera

Chrome

Nie wiem dlaczego mają inne nazwy w różnych przeglądarkach xD

 

Instalacja skryptu:

  1. Musisz mieć zainstalowany powyższy dodatek,
  2. Na pasku menu powinna pojawić się nowa ikonka odpowiadająca dodatkowi,
  3. Klikając na nią otwiera nam się menu, w którym klikamy "New user script",
  4. Jeśli trzeba (zależy od przeglądarki) podajemy id/nazwę skryptu (dowolną),
  5. Wklejamy kod, który znajduje się tutaj: http://pastebin.com/fY0PV3Sh
  6. Gdy zablokowana jest opcja wklejania, w ustawieniach dodatku zmieniamy domyślny edytor na notatnik.

Konfiguracja:

 

chyba nic nie muszę tłumaczyć ;)

 

/*
	          Projekty MPCForum = 1
	             Nowości z gier = 2
	                     MMORPG = 3
	                        FPS = 4
	              Single Player = 5
	                    Konsole = 6
	                Elektronika = 7
	     Niezbędnik Programisty = 8
	            Giełda MPCForum = 9
	               Forum Ogólne = 10
	                       Inne = 11
		*/
	//Poniżej w nawiasie podaj kolejność działów, korzystając z informacji powyżej 
	pozycja = new Array(11,8,3,4,5,6,7,2,9,10,1);//(WYMAGANE JEST 11 pozycji, nie więcej nie mniej!!!) W razie potrzeby daj 0 
	aktywuj = true; //true - działa, false - nie działa

 

Przykład konfiguracji:

 

Standardowe ułożenie działów:

pozycja = new Array(1,2,3,4,5,6,7,8,9,10,11);//(WYMAGANE JEST 11 pozycji, nie więcej nie mniej!!!) W razie potrzeby daj 0 

W kolejności: Forum ogólne --> Konsole --> Niezbędnik Programisty --> FPS --> reszta pusta

pozycja = new Array(10,6,8,4,0,0,0,0,0,0,0);//(WYMAGANE JEST 11 pozycji, nie więcej nie mniej!!!) W razie potrzeby daj 0 

 

Plany:

  • Oprócz kolejności działów głównych dać również możliwość zmiany podziałów (np Metin 2 <--> Minecraft <--> LOL)
  • automatyzacja skryptu (brak potrzeby zmiany w kodzie, tylko poprzez interfejs na stronie głównej)
  • uniwersalność - tak, aby skrypt działał również dla działów ukrytych dla przeciętnego usera ;)
  • ulubione działy w specjalnym "bloku" u samej góry
  • proponujcie ;)

 

Opublikowano

Podczas testowania skryptu na innym systemie napotkałem dziwny błąd, który nie pozwalał ładować się skryptowi. Obecnie już nie występuje,

 

 

Pracuję obecnie nad automatyzacją skryptu (poprzez dodanie strzałek obok działów, tak aby nie trzeba było niczego zmieniać manualnie w kodzie), a następnie zajmę się możliwością układania w dowolnej kolejności nie tylko działów głównych, ale również poddziałów (np. Minecraft, LOL, Metin 2, itp)

Opublikowano

@Latreso

 

Pomysł bardzo fajny, aczkolwiek jest kilka błędów, da się też to mocno zoptymalizować:

  • includujesz jQuery 1.11, gdy forum ma już załadowaną wersję 1.7 - to bardzo zły pomysł,
  • jQuery nie jest tu tak naprawdę w ogóle potrzebne, czysty js jest równie prosty,
  • niepotrzebnie przypisujesz do tablicy wszystkie działy, nawet te które i tak będą schowane.

Poniżej trochę poprawiona wersja (aczkolwiek można ją pewnie jeszcze ulepszyć):

  • czysty js,
  • do tablicy dzialy_glowne wczytywane jest tylko to co będzie użyte,
  • pozbycie się zbędnych warunków,
  • numeracja działów od 0,
  • działy nie wyświetlane po prostu należy pominąć w tablicy pozycja,
  • naprawione drobne błędy (brak średnika w jednym miejscu, podwójna deklaracja zmiennej i).
// ==UserScript==
// @        MPC
// @space   MPC
// @     http://www.mpcforum.pl/
// @version     0.1.3
// @       unsafeWindow
// @run-at      document-end
// @noframes
// ==/UserScript==

/*
 Projekty MPCForum = 0
 Nowości z gier = 1
 MMORPG = 2
 FPS = 3
 Single Player = 4
 Konsole = 5
 Elektronika = 6
 Niezbędnik Programisty = 7
 Giełda MPCForum = 8
 Forum Ogólne = 9
 Inne = 10
 */

// Poniżej w nawiasie podaj kolejność działów,
// wypisz tylko działy, które mają być wyświetlane (kolejność zapisu to kolejność wyświetlania)
var pozycja = [7, 9, 10];

// Tego nie edytuj:
(function() {

  var dzialy_glowne = [], i, id_for;

  id_for = [1094, 1042, 3, 11, 241, 331, 925, 188, 786, 1, 20];

  for(i = 0; i < 11; i++){
    dzialy_glowne[i] = pozycja.indexOf(i) == -1 ? "" : document.getElementById("category_"+id_for[i]).innerHTML;
  }

  console.log('Działy zostały zapisane w zmiennych, trwa ich zamiana...');

  for(i = 0; i < 11; i++){
    document.getElementById("category_" + id_for[i]).innerHTML = dzialy_glowne[i];
  }
})();

Czekam na dalszy rozwój projektu, bardzo przydatna rzecz ;)

miał problem z rozszyfrowaniem tego co pozmieniałem to napisz - dodam komentarze.

Chcesz precyzyjnej i zrozumiałej odpowiedzi? - Zadaj precyzyjne i zrozumiałe pytanie. Nie przyjmuję zleceń.
Nie odpowiadam na priv na pytania, które można zadać na forum. Chcesz mojej pomocy - oznacz mnie w poście =>  @"Hans Kloss PL" 

Opublikowano

@Hans Kloss PL

Ogólnie

//@grant unsafeWindow

pozwala na bezkolizyjne używanie różnych wersji biblioteki jquery

Dziękuję za pomoc, jednak nie mogę z niej skorzystać (jeśli chodzi o sam kod) ;)

Właśnie już pracuję nad uniwersalnym działaniem skryptu (chodzi o obsługę ukrytych działów) + dodanie strzałek na belkach z forami do łatwiejszego zarządzania działami + obsługa ciasteczek (prawdopodobnie zrezygnuję z opcji całkowitego ukrycia działu, zawsze można przecież zwinąć belkę ;) )

 

 

W każdym razie dzięki za pomoc i wszelkie uwagi ;)

 

PS: Nie lubię używać czystego js, ponieważ jak zaczynałem, to miałem masę błędów (strasznie mnie wkurzało to, że wszystkie litery musiały być idealnie [DUŻE / małe]) (chodzi głównie o getelementby...), poza tym jquery jest wygodniejsze w użyciu + niektóre funkcje działają nieco inaczej w różnych przeglądarkach, przez co nie trzeba tak na prawdę testować skryptu we wszystkich przeglądarkach ;)

Opublikowano

@1373230489-U611928.pngLatreso

Pomijając już kolizyjność, to wczytywanie dodatkowej biblioteki jest po prostu niewydajne, a przy tak prostych funkcjach zwykłe js jest raczej niezawodne.

Z pomocy możesz skorzystać, co najwyżej nie chcesz - nawet używając jQuery możesz z powodzeniem wprowadzić resztę optymalizacji ;)

 

Edit:

 

Z ciekawości pomierzyłem czasy - po 10 prób na obu wersjach, wyświetlanie 3 działów:

  • średnia z Twojej wersji: 1842 ms (z czego 31 ms to skrypt, reszta to ładowanie jQuery)
  • średnia z mojej wersji: 19 ms

Przyznasz, że około 100 x szybsze działanie skryptu jest chyba warte zachodu.

Chcesz precyzyjnej i zrozumiałej odpowiedzi? - Zadaj precyzyjne i zrozumiałe pytanie. Nie przyjmuję zleceń.
Nie odpowiadam na priv na pytania, które można zadać na forum. Chcesz mojej pomocy - oznacz mnie w poście =>  @"Hans Kloss PL" 

  • 1 miesiąc temu...
Opublikowano

@1373230489-U611928.pngLatreso

Pomijając już kolizyjność, to wczytywanie dodatkowej biblioteki jest po prostu niewydajne, a przy tak prostych funkcjach zwykłe js jest raczej niezawodne.

Z pomocy możesz skorzystać, co najwyżej nie chcesz - nawet używając jQuery możesz z powodzeniem wprowadzić resztę optymalizacji ;)

 

Edit:

 

Z ciekawości pomierzyłem czasy - po 10 prób na obu wersjach, wyświetlanie 3 działów:

  • średnia z Twojej wersji: 1842 ms (z czego 31 ms to skrypt, reszta to ładowanie jQuery)
  • średnia z mojej wersji: 19 ms

Przyznasz, że około 100 x szybsze działanie skryptu jest chyba warte zachodu.

 

Tylko byś krytykował i narzucał swój porządek rzeczy ;)

Daj trochę swobody, nie podawaj niczego "na tacy", to zniechęca nowych programistów. Wyraź swoją opinię, ale nie wytykaj błędów. Napisz, że "można by przyspieszyć to robiąc tak, a nie tak", nie podawaj gotowego rozwiązania, bo najwięcej uczy się właśnie poprzez szukanie. ;)

  • 2 tygodnie później...
Opublikowano

@Latreso

 

Pomysł bardzo fajny, aczkolwiek jest kilka błędów, da się też to mocno zoptymalizować:

  • includujesz jQuery 1.11, gdy forum ma już załadowaną wersję 1.7 - to bardzo zły pomysł,
  • jQuery nie jest tu tak naprawdę w ogóle potrzebne, czysty js jest równie prosty,
  • niepotrzebnie przypisujesz do tablicy wszystkie działy, nawet te które i tak będą schowane.

Poniżej trochę poprawiona wersja (aczkolwiek można ją pewnie jeszcze ulepszyć):

  • czysty js,
  • do tablicy dzialy_glowne wczytywane jest tylko to co będzie użyte,
  • pozbycie się zbędnych warunków,
  • numeracja działów od 0,
  • działy nie wyświetlane po prostu należy pominąć w tablicy pozycja,
  • naprawione drobne błędy (brak średnika w jednym miejscu, podwójna deklaracja zmiennej i).
// ==UserScript==
// @        MPC
// @space   MPC
// @     http://www.mpcforum.pl/
// @version     0.1.3
// @       unsafeWindow
// @run-at      document-end
// @noframes
// ==/UserScript==

/*
 Projekty MPCForum = 0
 Nowości z gier = 1
 MMORPG = 2
 FPS = 3
 Single Player = 4
 Konsole = 5
 Elektronika = 6
 Niezbędnik Programisty = 7
 Giełda MPCForum = 8
 Forum Ogólne = 9
 Inne = 10
 */

// Poniżej w nawiasie podaj kolejność działów,
// wypisz tylko działy, które mają być wyświetlane (kolejność zapisu to kolejność wyświetlania)
var pozycja = [7, 9, 10];

// Tego nie edytuj:
console.log('Skrypt zmieniajacy kolejność działów głównych załadowany!');
console.log('Oczekiwanie na załadowanie dokumentu...');
(function() {
  console.log('Dokument załadowany, trwa zapisywanie działów głównych do zmiennych...');

  var dzialy_glowne = [], i, id_for;

  id_for = [1094, 1042, 3, 11, 241, 331, 925, 188, 786, 1, 20];

  for(i = 0; i < 11; i++){
    dzialy_glowne[i] = pozycja.indexOf(i) == -1 ? "" : document.getElementById("category_"+id_for[i]).innerHTML;
  }

  console.log('Działy zostały zapisane w zmiennych, trwa ich zamiana...');

  for(i = 0; i < 11; i++){
    document.getElementById("category_" + id_for[i]).innerHTML = dzialy_glowne[i];
  }

  console.log('Zakończono ustawianie kolejności działów, skrypt kończy pracę.');
})();

Czekam na dalszy rozwój projektu, bardzo przydatna rzecz ;)

miał problem z rozszyfrowaniem tego co pozmieniałem to napisz - dodam komentarze.

 

Chciałem przetestować twój kod ale mi nie działa.

Mój stary nick: damian5602
Nick League Of Legends: Sonaes

Opublikowano

@damian5602

Co nie działa?

Chcesz precyzyjnej i zrozumiałej odpowiedzi? - Zadaj precyzyjne i zrozumiałe pytanie. Nie przyjmuję zleceń.
Nie odpowiadam na priv na pytania, które można zadać na forum. Chcesz mojej pomocy - oznacz mnie w poście =>  @"Hans Kloss PL" 

Opublikowano

@Hans Kloss PL

Twój kod, wpisuje działy i nic sie nie dzieje po reloadzie strony.

 

 

Jeżeli mam np 9 działów wpisane to nie działa, mam trzy działy i działa.

 

 

Tylko przy 3 działa poprawnie jak dam np 4 to nie zmienia ich kolejności a tylko pokazuje wybrane.

Mój stary nick: damian5602
Nick League Of Legends: Sonaes

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...