Răsfoiți Sursa

Improved: log page (#4204)

* first draft

* wip

* Theme Ansum

* Update logs_pagination.phtml

* Theme Mapco

* Update adark.css

* Update BlueLagoon.css

* Update dark.css

* Update screwdriver.css

* Theme Swage

* Update app/views/helpers/logs_pagination.phtml

Co-authored-by: Frans de Jonge <fransdejonge@gmail.com>

* Update app/views/helpers/logs_pagination.phtml

Co-authored-by: Frans de Jonge <fransdejonge@gmail.com>

* Update template.css

* Update logs_pagination.phtml

* Update logs_pagination.phtml

* Update logs_pagination.phtml

* RTL CSS

* Update dark.rtl.css

* Update swage.css

* fix CLI findings

* Indentation fixed

* icons improved

* CSS: centered icons

* i18n

* pipline test fixes

* Update conf.php

* Update gen.php

* Update app/i18n/fr/conf.php

Co-authored-by: Frans de Jonge <fransdejonge@gmail.com>
Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
maTh 4 ani în urmă
părinte
comite
6650d1d29e
70 a modificat fișierele cu 500 adăugiri și 407 ștergeri
  1. 3 0
      app/Models/Themes.php
  2. 13 0
      app/i18n/cz/conf.php
  3. 0 6
      app/i18n/cz/gen.php
  4. 13 0
      app/i18n/de/conf.php
  5. 0 6
      app/i18n/de/gen.php
  6. 13 0
      app/i18n/en-us/conf.php
  7. 0 6
      app/i18n/en-us/gen.php
  8. 13 0
      app/i18n/en/conf.php
  9. 0 6
      app/i18n/en/gen.php
  10. 13 0
      app/i18n/es/conf.php
  11. 0 6
      app/i18n/es/gen.php
  12. 13 0
      app/i18n/fr/conf.php
  13. 0 6
      app/i18n/fr/gen.php
  14. 13 0
      app/i18n/he/conf.php
  15. 0 6
      app/i18n/he/gen.php
  16. 13 0
      app/i18n/it/conf.php
  17. 0 6
      app/i18n/it/gen.php
  18. 13 0
      app/i18n/ja/conf.php
  19. 0 6
      app/i18n/ja/gen.php
  20. 13 0
      app/i18n/ko/conf.php
  21. 0 6
      app/i18n/ko/gen.php
  22. 13 0
      app/i18n/nl/conf.php
  23. 0 6
      app/i18n/nl/gen.php
  24. 13 0
      app/i18n/oc/conf.php
  25. 0 6
      app/i18n/oc/gen.php
  26. 13 0
      app/i18n/pl/conf.php
  27. 0 6
      app/i18n/pl/gen.php
  28. 13 0
      app/i18n/pt-br/conf.php
  29. 0 6
      app/i18n/pt-br/gen.php
  30. 13 0
      app/i18n/ru/conf.php
  31. 0 6
      app/i18n/ru/gen.php
  32. 13 0
      app/i18n/sk/conf.php
  33. 0 6
      app/i18n/sk/gen.php
  34. 13 0
      app/i18n/tr/conf.php
  35. 0 6
      app/i18n/tr/gen.php
  36. 13 0
      app/i18n/zh-cn/conf.php
  37. 0 6
      app/i18n/zh-cn/gen.php
  38. 8 0
      app/layout/aside_configure.phtml
  39. 44 37
      app/views/helpers/logs_pagination.phtml
  40. 41 13
      app/views/index/logs.phtml
  41. 10 37
      p/themes/Alternative-Dark/adark.css
  42. 10 37
      p/themes/Alternative-Dark/adark.rtl.css
  43. 0 5
      p/themes/Ansum/_components.scss
  44. 0 4
      p/themes/Ansum/_mobile.scss
  45. 4 7
      p/themes/Ansum/_sidebar.scss
  46. 3 10
      p/themes/Ansum/ansum.css
  47. 3 10
      p/themes/Ansum/ansum.rtl.css
  48. 6 14
      p/themes/BlueLagoon/BlueLagoon.css
  49. 6 14
      p/themes/BlueLagoon/BlueLagoon.rtl.css
  50. 2 5
      p/themes/Dark/dark.css
  51. 2 5
      p/themes/Dark/dark.rtl.css
  52. 1 19
      p/themes/Flat/flat.css
  53. 1 19
      p/themes/Flat/flat.rtl.css
  54. 0 5
      p/themes/Mapco/_components.scss
  55. 0 4
      p/themes/Mapco/_mobile.scss
  56. 5 7
      p/themes/Mapco/_sidebar.scss
  57. 4 10
      p/themes/Mapco/mapco.css
  58. 4 10
      p/themes/Mapco/mapco.rtl.css
  59. 10 0
      p/themes/Origine/origine.css
  60. 10 0
      p/themes/Origine/origine.rtl.css
  61. 2 1
      p/themes/Screwdriver/screwdriver.css
  62. 2 1
      p/themes/Screwdriver/screwdriver.rtl.css
  63. 9 8
      p/themes/Swage/swage.css
  64. 9 6
      p/themes/Swage/swage.rtl.css
  65. 5 1
      p/themes/Swage/swage.scss
  66. 24 5
      p/themes/base-theme/template.css
  67. 24 5
      p/themes/base-theme/template.rtl.css
  68. 4 0
      p/themes/icons/error.svg
  69. 5 0
      p/themes/icons/notice.svg
  70. 5 0
      p/themes/icons/warning.svg

+ 3 - 0
app/Models/Themes.php

@@ -79,6 +79,7 @@ class FreshRSS_Themes extends Minz_Model {
 			'close' => '❌',
 			'configure' => '⚙',
 			'down' => '▽',
+			'error' => '❌',
 			'favorite' => '★',
 			'FreshRSS-logo' => '⊚',
 			'help' => 'ⓘ',
@@ -91,6 +92,7 @@ class FreshRSS_Themes extends Minz_Model {
 			'logout' => '🔓',
 			'next' => '⏩',
 			'non-starred' => '☆',
+			'notice' => 'ⓘ',
 			'prev' => '⏪',
 			'read' => '☑',
 			'rss' => '☄',
@@ -107,6 +109,7 @@ class FreshRSS_Themes extends Minz_Model {
 			'view-normal' => '☰',
 			'view-global' => '☷',
 			'view-reader' => '☕',
+			'warning' => '△',
 		);
 		return isset($name) ? $alts[$name] : '';
 	}

+ 13 - 0
app/i18n/cz/conf.php

@@ -66,6 +66,19 @@ return array(
 			'thin' => 'Úzká',
 		),
 	),
+	'logs' => array(
+		'loglist' => array(
+			'level' => 'Log Level',	// TODO
+			'message' => 'Log Message',	// TODO
+			'timestamp' => 'Timestamp',	// TODO
+		),
+		'pagination' => array(
+			'first' => 'První',
+			'last' => 'Poslední',
+			'next' => 'Další',
+			'previous' => 'Předchozí',
+		),
+	),
 	'profile' => array(
 		'_' => 'Správa profilu',
 		'api' => 'Správa API',

+ 0 - 6
app/i18n/cz/gen.php

@@ -176,12 +176,6 @@ return array(
 		'user_management' => 'Správa uživatelů',
 		'user_profile' => 'Profil',
 	),
-	'pagination' => array(
-		'first' => 'První',
-		'last' => 'Poslední',
-		'next' => 'Další',
-		'previous' => 'Předchozí',
-	),
 	'period' => array(
 		'days' => 'dní',
 		'hours' => 'hodin',

+ 13 - 0
app/i18n/de/conf.php

@@ -66,6 +66,19 @@ return array(
 			'thin' => 'Klein',
 		),
 	),
+	'logs' => array(
+		'loglist' => array(
+			'level' => 'Log Stufe',
+			'message' => 'Log Nachricht',
+			'timestamp' => 'Zeitstempel',
+		),
+		'pagination' => array(
+			'first' => 'Erste',
+			'last' => 'Letzte',
+			'next' => 'Nächste',
+			'previous' => 'Vorherige',
+		),
+	),
 	'profile' => array(
 		'_' => 'Profil-Verwaltung',
 		'api' => 'API-Verwaltung',

+ 0 - 6
app/i18n/de/gen.php

@@ -176,12 +176,6 @@ return array(
 		'user_management' => 'Benutzer verwalten',
 		'user_profile' => 'Profil',
 	),
-	'pagination' => array(
-		'first' => 'Erste',
-		'last' => 'Letzte',
-		'next' => 'Nächste',
-		'previous' => 'Vorherige',
-	),
 	'period' => array(
 		'days' => 'Tage',
 		'hours' => 'Stunden',

+ 13 - 0
app/i18n/en-us/conf.php

@@ -66,6 +66,19 @@ return array(
 			'thin' => 'Narrow',	// IGNORE
 		),
 	),
+	'logs' => array(
+		'loglist' => array(
+			'level' => 'Log Level',	// TODO
+			'message' => 'Log Message',	// TODO
+			'timestamp' => 'Timestamp',	// TODO
+		),
+		'pagination' => array(
+			'first' => 'First',	// IGNORE
+			'last' => 'Last',	// IGNORE
+			'next' => 'Next',	// IGNORE
+			'previous' => 'Previous',	// IGNORE
+		),
+	),
 	'profile' => array(
 		'_' => 'Profile management',	// IGNORE
 		'api' => 'API management',	// IGNORE

+ 0 - 6
app/i18n/en-us/gen.php

@@ -176,12 +176,6 @@ return array(
 		'user_management' => 'Manage users',	// IGNORE
 		'user_profile' => 'Profile',	// IGNORE
 	),
-	'pagination' => array(
-		'first' => 'First',	// IGNORE
-		'last' => 'Last',	// IGNORE
-		'next' => 'Next',	// IGNORE
-		'previous' => 'Previous',	// IGNORE
-	),
 	'period' => array(
 		'days' => 'days',	// IGNORE
 		'hours' => 'hours',	// IGNORE

+ 13 - 0
app/i18n/en/conf.php

@@ -66,6 +66,19 @@ return array(
 			'thin' => 'Narrow',
 		),
 	),
+	'logs' => array(
+		'loglist' => array(
+			'level' => 'Log Level',	// TODO
+			'message' => 'Log Message',	// TODO
+			'timestamp' => 'Timestamp',	// TODO
+		),
+		'pagination' => array(
+			'first' => 'First',
+			'last' => 'Last',
+			'next' => 'Next',
+			'previous' => 'Previous',
+		),
+	),
 	'profile' => array(
 		'_' => 'Profile management',
 		'api' => 'API management',

+ 0 - 6
app/i18n/en/gen.php

@@ -176,12 +176,6 @@ return array(
 		'user_management' => 'Manage users',
 		'user_profile' => 'Profile',
 	),
-	'pagination' => array(
-		'first' => 'First',
-		'last' => 'Last',
-		'next' => 'Next',
-		'previous' => 'Previous',
-	),
 	'period' => array(
 		'days' => 'days',
 		'hours' => 'hours',

+ 13 - 0
app/i18n/es/conf.php

@@ -66,6 +66,19 @@ return array(
 			'thin' => 'Estrecho',
 		),
 	),
+	'logs' => array(
+		'loglist' => array(
+			'level' => 'Log Level',	// TODO
+			'message' => 'Log Message',	// TODO
+			'timestamp' => 'Timestamp',	// TODO
+		),
+		'pagination' => array(
+			'first' => 'Primero',
+			'last' => 'Último',
+			'next' => 'Siguiente',
+			'previous' => 'Anterior',
+		),
+	),
 	'profile' => array(
 		'_' => 'Administración de perfiles',
 		'api' => 'Administración de API',

+ 0 - 6
app/i18n/es/gen.php

@@ -176,12 +176,6 @@ return array(
 		'user_management' => 'Administrar usuarios',
 		'user_profile' => 'Perfil',
 	),
-	'pagination' => array(
-		'first' => 'Primero',
-		'last' => 'Último',
-		'next' => 'Siguiente',
-		'previous' => 'Anterior',
-	),
 	'period' => array(
 		'days' => 'dias',
 		'hours' => 'horas',

+ 13 - 0
app/i18n/fr/conf.php

@@ -66,6 +66,19 @@ return array(
 			'thin' => 'Fine',
 		),
 	),
+	'logs' => array(
+		'loglist' => array(
+			'level' => 'Niveau de sévérité',
+			'message' => 'Message de journal',
+			'timestamp' => 'Horodatage',
+		),
+		'pagination' => array(
+			'first' => 'Début',
+			'last' => 'Fin',
+			'next' => 'Suivant',
+			'previous' => 'Précédent',
+		),
+	),
 	'profile' => array(
 		'_' => 'Gestion du profil',
 		'api' => 'Gestion de l’API',

+ 0 - 6
app/i18n/fr/gen.php

@@ -176,12 +176,6 @@ return array(
 		'user_management' => 'Gestion des utilisateurs',
 		'user_profile' => 'Profil',
 	),
-	'pagination' => array(
-		'first' => 'Début',
-		'last' => 'Fin',
-		'next' => 'Suivant',
-		'previous' => 'Précédent',
-	),
 	'period' => array(
 		'days' => 'jours',
 		'hours' => 'heures',

+ 13 - 0
app/i18n/he/conf.php

@@ -66,6 +66,19 @@ return array(
 			'thin' => 'צר',
 		),
 	),
+	'logs' => array(
+		'loglist' => array(
+			'level' => 'Log Level',	// TODO
+			'message' => 'Log Message',	// TODO
+			'timestamp' => 'Timestamp',	// TODO
+		),
+		'pagination' => array(
+			'first' => 'הראשון',
+			'last' => 'אחרון',
+			'next' => 'הבא',
+			'previous' => 'הקודם',
+		),
+	),
 	'profile' => array(
 		'_' => 'Profile management',	// TODO
 		'api' => 'API management',	// TODO

+ 0 - 6
app/i18n/he/gen.php

@@ -176,12 +176,6 @@ return array(
 		'user_management' => 'Manage users',	// TODO
 		'user_profile' => 'Profile',	// TODO
 	),
-	'pagination' => array(
-		'first' => 'הראשון',
-		'last' => 'אחרון',
-		'next' => 'הבא',
-		'previous' => 'הקודם',
-	),
 	'period' => array(
 		'days' => 'days',	// TODO
 		'hours' => 'hours',	// TODO

+ 13 - 0
app/i18n/it/conf.php

@@ -66,6 +66,19 @@ return array(
 			'thin' => 'Stretto',
 		),
 	),
+	'logs' => array(
+		'loglist' => array(
+			'level' => 'Log Level',	// TODO
+			'message' => 'Log Message',	// TODO
+			'timestamp' => 'Timestamp',	// TODO
+		),
+		'pagination' => array(
+			'first' => 'Prima',
+			'last' => 'Ultima',
+			'next' => 'Successiva',
+			'previous' => 'Precedente',
+		),
+	),
 	'profile' => array(
 		'_' => 'Gestione profili',
 		'api' => 'API management',	// TODO

+ 0 - 6
app/i18n/it/gen.php

@@ -176,12 +176,6 @@ return array(
 		'user_management' => 'Gestione utenti',
 		'user_profile' => 'Profilo',
 	),
-	'pagination' => array(
-		'first' => 'Prima',
-		'last' => 'Ultima',
-		'next' => 'Successiva',
-		'previous' => 'Precedente',
-	),
 	'period' => array(
 		'days' => 'days',	// TODO
 		'hours' => 'hours',	// TODO

+ 13 - 0
app/i18n/ja/conf.php

@@ -66,6 +66,19 @@ return array(
 			'thin' => '狭い',
 		),
 	),
+	'logs' => array(
+		'loglist' => array(
+			'level' => 'Log Level',	// TODO
+			'message' => 'Log Message',	// TODO
+			'timestamp' => 'Timestamp',	// TODO
+		),
+		'pagination' => array(
+			'first' => '先頭',
+			'last' => '最後',
+			'next' => 'つぎへ',
+			'previous' => '前へ',
+		),
+	),
 	'profile' => array(
 		'_' => 'プロフィール',
 		'api' => 'API管理',

+ 0 - 6
app/i18n/ja/gen.php

@@ -176,12 +176,6 @@ return array(
 		'user_management' => 'ユーザー管理',
 		'user_profile' => 'プロフィール',
 	),
-	'pagination' => array(
-		'first' => '先頭',
-		'last' => '最後',
-		'next' => 'つぎへ',
-		'previous' => '前へ',
-	),
 	'period' => array(
 		'days' => '日',
 		'hours' => '時',

+ 13 - 0
app/i18n/ko/conf.php

@@ -66,6 +66,19 @@ return array(
 			'thin' => '얇게',
 		),
 	),
+	'logs' => array(
+		'loglist' => array(
+			'level' => 'Log Level',	// TODO
+			'message' => 'Log Message',	// TODO
+			'timestamp' => 'Timestamp',	// TODO
+		),
+		'pagination' => array(
+			'first' => '처음으로',
+			'last' => '마지막으로',
+			'next' => '다음',
+			'previous' => '이전',
+		),
+	),
 	'profile' => array(
 		'_' => '프로필 관리',
 		'api' => 'API 관리',

+ 0 - 6
app/i18n/ko/gen.php

@@ -176,12 +176,6 @@ return array(
 		'user_management' => '사용자 관리',
 		'user_profile' => '프로필',
 	),
-	'pagination' => array(
-		'first' => '처음으로',
-		'last' => '마지막으로',
-		'next' => '다음',
-		'previous' => '이전',
-	),
 	'period' => array(
 		'days' => '일',
 		'hours' => '시',

+ 13 - 0
app/i18n/nl/conf.php

@@ -66,6 +66,19 @@ return array(
 			'thin' => 'Smal',
 		),
 	),
+	'logs' => array(
+		'loglist' => array(
+			'level' => 'Log Level',	// TODO
+			'message' => 'Log Message',	// TODO
+			'timestamp' => 'Timestamp',	// TODO
+		),
+		'pagination' => array(
+			'first' => 'Eerste',
+			'last' => 'Laatste',
+			'next' => 'Volgende',
+			'previous' => 'Vorige',
+		),
+	),
 	'profile' => array(
 		'_' => 'Profielbeheer',
 		'api' => 'API-beheer',

+ 0 - 6
app/i18n/nl/gen.php

@@ -176,12 +176,6 @@ return array(
 		'user_management' => 'Gebruikersbeheer',
 		'user_profile' => 'Profiel',
 	),
-	'pagination' => array(
-		'first' => 'Eerste',
-		'last' => 'Laatste',
-		'next' => 'Volgende',
-		'previous' => 'Vorige',
-	),
 	'period' => array(
 		'days' => 'dagen',
 		'hours' => 'uren',

+ 13 - 0
app/i18n/oc/conf.php

@@ -66,6 +66,19 @@ return array(
 			'thin' => 'Fina',
 		),
 	),
+	'logs' => array(
+		'loglist' => array(
+			'level' => 'Log Level',	// TODO
+			'message' => 'Log Message',	// TODO
+			'timestamp' => 'Timestamp',	// TODO
+		),
+		'pagination' => array(
+			'first' => 'Debuta',
+			'last' => 'Fin',
+			'next' => 'Seguent',
+			'previous' => 'Precedent',
+		),
+	),
 	'profile' => array(
 		'_' => 'Gestion del perfil',
 		'api' => 'Gestion API',

+ 0 - 6
app/i18n/oc/gen.php

@@ -176,12 +176,6 @@ return array(
 		'user_management' => 'Gestion dels utilizaires',
 		'user_profile' => 'Perfil',
 	),
-	'pagination' => array(
-		'first' => 'Debuta',
-		'last' => 'Fin',
-		'next' => 'Seguent',
-		'previous' => 'Precedent',
-	),
 	'period' => array(
 		'days' => 'jorns',
 		'hours' => 'oras',

+ 13 - 0
app/i18n/pl/conf.php

@@ -66,6 +66,19 @@ return array(
 			'thin' => 'Wąska',
 		),
 	),
+	'logs' => array(
+		'loglist' => array(
+			'level' => 'Log Level',	// TODO
+			'message' => 'Log Message',	// TODO
+			'timestamp' => 'Timestamp',	// TODO
+		),
+		'pagination' => array(
+			'first' => 'Początek',
+			'last' => 'Koniec',
+			'next' => 'Następne',
+			'previous' => 'Poprzednie',
+		),
+	),
 	'profile' => array(
 		'_' => 'Zarządzanie profilem',
 		'api' => 'Zarządzanie API',

+ 0 - 6
app/i18n/pl/gen.php

@@ -176,12 +176,6 @@ return array(
 		'user_management' => 'Zarządzanie użytkownikami',
 		'user_profile' => 'Profil',
 	),
-	'pagination' => array(
-		'first' => 'Początek',
-		'last' => 'Koniec',
-		'next' => 'Następne',
-		'previous' => 'Poprzednie',
-	),
 	'period' => array(
 		'days' => 'dni',
 		'hours' => 'godziny',

+ 13 - 0
app/i18n/pt-br/conf.php

@@ -66,6 +66,19 @@ return array(
 			'thin' => 'Fino',
 		),
 	),
+	'logs' => array(
+		'loglist' => array(
+			'level' => 'Log Level',	// TODO
+			'message' => 'Log Message',	// TODO
+			'timestamp' => 'Timestamp',	// TODO
+		),
+		'pagination' => array(
+			'first' => 'Primeiro',
+			'last' => 'Último',
+			'next' => 'Próximo',
+			'previous' => 'Anterior',
+		),
+	),
 	'profile' => array(
 		'_' => 'Gerenciamento de perfil',
 		'api' => 'Administração da API',

+ 0 - 6
app/i18n/pt-br/gen.php

@@ -176,12 +176,6 @@ return array(
 		'user_management' => 'Gerenciamento de usuários',
 		'user_profile' => 'Perfil',
 	),
-	'pagination' => array(
-		'first' => 'Primeiro',
-		'last' => 'Último',
-		'next' => 'Próximo',
-		'previous' => 'Anterior',
-	),
 	'period' => array(
 		'days' => 'dias',
 		'hours' => 'horas',

+ 13 - 0
app/i18n/ru/conf.php

@@ -66,6 +66,19 @@ return array(
 			'thin' => 'Узкое',
 		),
 	),
+	'logs' => array(
+		'loglist' => array(
+			'level' => 'Log Level',	// TODO
+			'message' => 'Log Message',	// TODO
+			'timestamp' => 'Timestamp',	// TODO
+		),
+		'pagination' => array(
+			'first' => 'Первая',
+			'last' => 'Последняя',
+			'next' => 'Следующая',
+			'previous' => 'Предыдущая',
+		),
+	),
 	'profile' => array(
 		'_' => 'Настройки профиля',
 		'api' => 'Настройки API',

+ 0 - 6
app/i18n/ru/gen.php

@@ -176,12 +176,6 @@ return array(
 		'user_management' => 'Управление пользователями',
 		'user_profile' => 'Профиль',
 	),
-	'pagination' => array(
-		'first' => 'Первая',
-		'last' => 'Последняя',
-		'next' => 'Следующая',
-		'previous' => 'Предыдущая',
-	),
 	'period' => array(
 		'days' => 'дней',
 		'hours' => 'часов',

+ 13 - 0
app/i18n/sk/conf.php

@@ -66,6 +66,19 @@ return array(
 			'thin' => 'Úzka',
 		),
 	),
+	'logs' => array(
+		'loglist' => array(
+			'level' => 'Log Level',	// TODO
+			'message' => 'Log Message',	// TODO
+			'timestamp' => 'Timestamp',	// TODO
+		),
+		'pagination' => array(
+			'first' => 'Prvý',
+			'last' => 'Posledný',
+			'next' => 'Ďalší',
+			'previous' => 'Predošlý',
+		),
+	),
 	'profile' => array(
 		'_' => 'Správca profilu',
 		'api' => 'Správa API',

+ 0 - 6
app/i18n/sk/gen.php

@@ -176,12 +176,6 @@ return array(
 		'user_management' => 'Spravovať používateľov',
 		'user_profile' => 'Profil',
 	),
-	'pagination' => array(
-		'first' => 'Prvý',
-		'last' => 'Posledný',
-		'next' => 'Ďalší',
-		'previous' => 'Predošlý',
-	),
 	'period' => array(
 		'days' => 'dni',
 		'hours' => 'hodiny',

+ 13 - 0
app/i18n/tr/conf.php

@@ -66,6 +66,19 @@ return array(
 			'thin' => 'Zayıf',
 		),
 	),
+	'logs' => array(
+		'loglist' => array(
+			'level' => 'Log Level',	// TODO
+			'message' => 'Log Message',	// TODO
+			'timestamp' => 'Timestamp',	// TODO
+		),
+		'pagination' => array(
+			'first' => 'İlk',
+			'last' => 'Son',
+			'next' => 'Sonraki',
+			'previous' => 'Önceki',
+		),
+	),
 	'profile' => array(
 		'_' => 'Profil yönetimi',
 		'api' => 'API yönetimi',

+ 0 - 6
app/i18n/tr/gen.php

@@ -176,12 +176,6 @@ return array(
 		'user_management' => 'Kullanıcıları yönet',
 		'user_profile' => 'Profil',
 	),
-	'pagination' => array(
-		'first' => 'İlk',
-		'last' => 'Son',
-		'next' => 'Sonraki',
-		'previous' => 'Önceki',
-	),
 	'period' => array(
 		'days' => 'gün',
 		'hours' => 'saat',

+ 13 - 0
app/i18n/zh-cn/conf.php

@@ -66,6 +66,19 @@ return array(
 			'thin' => '窄',
 		),
 	),
+	'logs' => array(
+		'loglist' => array(
+			'level' => 'Log Level',	// TODO
+			'message' => 'Log Message',	// TODO
+			'timestamp' => 'Timestamp',	// TODO
+		),
+		'pagination' => array(
+			'first' => '首页',
+			'last' => '末页',
+			'next' => '下一页',
+			'previous' => '上一页',
+		),
+	),
 	'profile' => array(
 		'_' => '用户管理',
 		'api' => 'API 管理',

+ 0 - 6
app/i18n/zh-cn/gen.php

@@ -176,12 +176,6 @@ return array(
 		'user_management' => '用户管理',
 		'user_profile' => '用户帐户',
 	),
-	'pagination' => array(
-		'first' => '首页',
-		'last' => '末页',
-		'next' => '下一页',
-		'previous' => '上一页',
-	),
 	'period' => array(
 		'days' => '天',
 		'hours' => '时',

+ 8 - 0
app/layout/aside_configure.phtml

@@ -33,6 +33,11 @@
 		<li class="item<?= Minz_Request::controllerName() === 'extension' ? ' active' : '' ?>">
 			<a href="<?= _url('extension', 'index') ?>"><?= _t('gen.menu.extensions') ?></a>
 		</li>
+		<?php if (!FreshRSS_Auth::hasAccess('admin')) { ?>
+		<li class="item<?= Minz_Request::actionName() === 'logs' ? ' active' : '' ?>">
+			<a href="<?= _url('index', 'logs') ?>"><?= _t('gen.menu.logs') ?></a>
+		</li>
+		<?php } ?>
 		<?= Minz_ExtensionManager::callHook('menu_configuration_entry') ?>
 
 		<?php if (FreshRSS_Auth::hasAccess('admin')) { ?>
@@ -53,6 +58,9 @@
 		<li class="item<?= Minz_Request::controllerName() === 'update' && Minz_Request::actionName() === 'index' ? ' active' : '' ?>">
 			<a href="<?= _url('update', 'index') ?>"><?= _t('gen.menu.update') ?></a>
 		</li>
+		<li class="item<?= Minz_Request::actionName() === 'logs' ? ' active' : '' ?>">
+			<a href="<?= _url('index', 'logs') ?>"><?= _t('gen.menu.logs') ?></a>
+		</li>
 		<?php } ?>
 		<?= Minz_ExtensionManager::callHook('menu_admin_entry') ?>
 		<?php } ?>

+ 44 - 37
app/views/helpers/logs_pagination.phtml

@@ -6,46 +6,53 @@
 ?>
 
 <?php if ($this->nbPage > 1) { ?>
-<ul class="pagination">
-	<?php
-		/** @var int $getteur */
-		$params[$getteur] = 1;
-	?>
-	<li class="item pager-first">
-		<?php if ($this->currentPage > 1) { ?>
-		<a href="<?= Minz_Url::display(array('c' => $c, 'a' => $a, 'params' => $params)) ?>">« <?= _t('gen.pagination.first') ?></a>
-		<?php } ?>
-	</li>
+<nav class="nav-pagination nav-list">
+	<ul class="pagination">
+		<?php
+			/** @var int $getteur */
+			$params[$getteur] = 1;
+		?>
+		<li class="item pager-first">
+			<a href="<?= Minz_Url::display(array('c' => $c, 'a' => $a, 'params' => $params)) ?>">« <?= _t('conf.logs.pagination.first') ?></a>
+		</li>
 
-	<?php $params[$getteur] = $this->currentPage - 1; ?>
-	<li class="item pager-previous">
-		<?php if ($this->currentPage > 1) { ?>
-		<a href="<?= Minz_Url::display(array('c' => $c, 'a' => $a, 'params' => $params)) ?>">‹ <?= _t('gen.pagination.previous') ?></a>
-		<?php } ?>
-	</li>
+		<?php $params[$getteur] = $this->currentPage - 1; ?>
+		<li class="item pager-previous">
+			<a href="<?= Minz_Url::display(array('c' => $c, 'a' => $a, 'params' => $params)) ?>">‹ <?= _t('conf.logs.pagination.previous') ?></a>
+		</li>
 
-	<?php for ($i = $this->currentPage - 2; $i <= $this->currentPage + 2; $i++) { ?>
-		<?php if($i > 0 && $i <= $this->nbPage) { ?>
-			<?php if ($i != $this->currentPage) { ?>
-			<?php $params[$getteur] = $i; ?>
-			<li class="item pager-item"><a href="<?= Minz_Url::display(array('c' => $c, 'a' => $a, 'params' => $params)) ?>"><?= $i ?></a></li>
-			<?php } else { ?>
-			<li class="item pager-current"><?= $i ?></li>
-			<?php } ?>
+		<?php if ($this->currentPage - 2 > 1) { ?>
+		<li class="item">…</a></li>
 		<?php } ?>
-	<?php } ?>
 
-	<?php $params[$getteur] = $this->currentPage + 1; ?>
-	<li class="item pager-next">
-		<?php if ($this->currentPage < $this->nbPage) { ?>
-		<a href="<?= Minz_Url::display(array('c' => $c, 'a' => $a, 'params' => $params)) ?>"><?= _t('gen.pagination.next') ?> ›</a>
-		<?php } ?>
-	</li>
-	<?php $params[$getteur] = $this->nbPage; ?>
-	<li class="item pager-last">
-		<?php if ($this->currentPage < $this->nbPage) { ?>
-		<a href="<?= Minz_Url::display(array('c' => $c, 'a' => $a, 'params' => $params)) ?>"><?= _t('gen.pagination.last') ?> »</a>
+		<?php
+		for ($i = $this->currentPage - 2; $i <= $this->currentPage + 2; $i++) {
+			if($i > 0 && $i <= $this->nbPage) {
+				if ($i != $this->currentPage) {
+					$params[$getteur] = $i;
+					$class = '';
+					$aria = 'false';
+				} else {
+					$class = ' active';
+					$aria = 'true';
+				} ?>
+				<li class="item<?= $class ?>"><a href="<?= Minz_Url::display(array('c' => $c, 'a' => $a, 'params' => $params)) ?>" aria-current="<?= $aria ?>"><?= $i ?></a></li>
+			<?php
+			}
+		} ?>
+
+		<?php if ($this->nbPage > $i - 1) { ?>
+		<li class="item">…</a></li>
 		<?php } ?>
-	</li>
-</ul>
+
+		<?php $params[$getteur] = $this->currentPage + 1; ?>
+		<li class="item pager-next">
+			<a href="<?= Minz_Url::display(array('c' => $c, 'a' => $a, 'params' => $params)) ?>"><?= _t('conf.logs.pagination.next') ?> ›</a>
+		</li>
+		<?php $params[$getteur] = $this->nbPage; ?>
+		<li class="item pager-last">
+			<a href="<?= Minz_Url::display(array('c' => $c, 'a' => $a, 'params' => $params)) ?>"><?= _t('conf.logs.pagination.last') ?> »</a>
+		</li>
+	</ul>
+</nav>
 <?php } ?>

+ 41 - 13
app/views/index/logs.phtml

@@ -1,15 +1,12 @@
 <?php /** @var FreshRSS_View $this */ ?>
-<main class="post content">
+<?php $this->partial('aside_configure'); ?>
+<main class="post">
 	<div class="link-back-wrapper">
 		<a class="link-back" href="<?= _url('index', 'index') ?>"><?= _t('gen.action.back_to_rss_feeds') ?></a>
 	</div>
 
 	<h1><?= _t('index.log') ?></h1>
-	<form method="post" action="<?= _url('index', 'logs') ?>"><p>
-		<input type="hidden" name="_csrf" value="<?= FreshRSS_Auth::csrfToken() ?>" />
-		<input type="hidden" name="clearLogs" />
-		<button type="submit" class="btn"><?= _t('index.log.clear') ?></button>
-	</p></form>
+	
 
 	<?php
 		/** @var array<FreshRSS_Log> $items */
@@ -17,18 +14,49 @@
 	?>
 
 	<?php if (!empty($items)) { ?>
-	<div class="loglist">
-		<?php $this->logsPaginator->render('logs_pagination.phtml', 'page'); ?>
-
+	<?php $this->logsPaginator->render('logs_pagination.phtml', 'page'); ?>
+	<div id="loglist-wrapper">
+		<table id="loglist">
+			<thead>
+				<th><?= _t('conf.logs.loglist.level') ?></th>
+				<th><?= _t('conf.logs.loglist.timestamp') ?></th>
+				<th><?= _t('conf.logs.loglist.message') ?></th>
+			</thead>
+			<tbody>
 		<?php foreach ($items as $log) { ?>
-		<div class="log <?= $log->level() ?>"><span class="date">
-				<?= @date('Y-m-d H:i:s', @strtotime($log->date())) ?>
-			</span><?= htmlspecialchars($log->info(), ENT_NOQUOTES, 'UTF-8') ?></div>
+		<tr class="log-item">
+			<td class="log-<?= $log->level() ?>">
+				<?= _i($log->level()) ?>
+			</td>
+			<td class="log-date">
+				<time datetime="<?= @date('Y-m-d H:i:s', @strtotime($log->date())) ?>">
+					<?= @date('Y-m-d H:i:s', @strtotime($log->date())) ?>
+				</time>
+			</td>
+			<td class="log-message">
+				<?= htmlspecialchars($log->info(), ENT_NOQUOTES, 'UTF-8') ?>
+			</td>
+			</tr>
 		<?php } ?>
+		</tbody>
+		</table>
+	</div>
+	<?php $this->logsPaginator->render('logs_pagination.phtml', 'page'); ?>
+	
 
-		<?php $this->logsPaginator->render('logs_pagination.phtml', 'page'); ?>
+
+	<form method="post" action="<?= _url('index', 'logs') ?>">
+	<div class="form-group form-actions">
+	<input type="hidden" name="_csrf" value="<?= FreshRSS_Auth::csrfToken() ?>" />
+		<input type="hidden" name="clearLogs" />
+		<div class="group-controls">
+		<button type="submit" class="btn btn-attention"><?= _t('index.log.clear') ?></button>
+		</div>
 	</div>
+	</form>
+
 	<?php } else { ?>
 	<p class="alert alert-warn"><?= _t('index.log.empty') ?></p>
 	<?php } ?>
+	
 </main>

+ 10 - 37
p/themes/Alternative-Dark/adark.css

@@ -219,20 +219,20 @@ a.btn {
 .nav-list .item {
 	height: 2.5em;
 	line-height: 2.5em;
+	color: #ccc;
 	font-size: 0.9rem;
 }
 
-.nav-list .item:hover {
-	background: #1f1f1f;
+.nav-list .item a {
+	color: #ccc;
 }
 
-.nav-list .item.active {
-	background: #171717;
-	color: #fff;
+.nav-list .item a:hover {
+	background-color: #1f1f1f;
 }
 
 .nav-list .item.active a {
-	color: #fff;
+	background-color: #1f1f1f;
 }
 
 .nav-list .disable {
@@ -395,41 +395,14 @@ a.btn {
 }
 
 /*=== Pagination */
-.pagination {
-	background: #171717;
-	text-align: center;
-	color: #e8e8e8;
-	font-size: 0.8em;
-}
-
-.content .pagination {
-	margin: 0;
-	padding: 0;
-}
-
-.pagination .item.pager-current {
-	font-weight: bold;
-	font-size: 1.5em;
-}
-
 .pagination .item a {
-	display: block;
-	color: #333;
-	font-style: italic;
 	line-height: 3em;
-	text-decoration: none;
 }
 
-.pagination .item a:hover {
-	background: #ddd;
-}
-
-.pagination:first-child .item {
-	border-bottom: 1px solid #aaa;
-}
-
-.pagination:last-child .item {
-	border-top: 1px solid #292929;
+.pagination {
+	color: #999;
+	border-top: 1px solid #999;
+	border-bottom: 1px solid #999;
 }
 
 /*=== Boxes */

+ 10 - 37
p/themes/Alternative-Dark/adark.rtl.css

@@ -219,20 +219,20 @@ a.btn {
 .nav-list .item {
 	height: 2.5em;
 	line-height: 2.5em;
+	color: #ccc;
 	font-size: 0.9rem;
 }
 
-.nav-list .item:hover {
-	background: #1f1f1f;
+.nav-list .item a {
+	color: #ccc;
 }
 
-.nav-list .item.active {
-	background: #171717;
-	color: #fff;
+.nav-list .item a:hover {
+	background-color: #1f1f1f;
 }
 
 .nav-list .item.active a {
-	color: #fff;
+	background-color: #1f1f1f;
 }
 
 .nav-list .disable {
@@ -395,41 +395,14 @@ a.btn {
 }
 
 /*=== Pagination */
-.pagination {
-	background: #171717;
-	text-align: center;
-	color: #e8e8e8;
-	font-size: 0.8em;
-}
-
-.content .pagination {
-	margin: 0;
-	padding: 0;
-}
-
-.pagination .item.pager-current {
-	font-weight: bold;
-	font-size: 1.5em;
-}
-
 .pagination .item a {
-	display: block;
-	color: #333;
-	font-style: italic;
 	line-height: 3em;
-	text-decoration: none;
 }
 
-.pagination .item a:hover {
-	background: #ddd;
-}
-
-.pagination:first-child .item {
-	border-bottom: 1px solid #aaa;
-}
-
-.pagination:last-child .item {
-	border-top: 1px solid #292929;
+.pagination {
+	color: #999;
+	border-top: 1px solid #999;
+	border-bottom: 1px solid #999;
 }
 
 /*=== Boxes */

+ 0 - 5
p/themes/Ansum/_components.scss

@@ -185,11 +185,6 @@
 			font-style: italic;
 			line-height: 3em;
 			text-decoration: none;
-
-			&:hover {
-				background: variables.$main-font-color;
-				color: variables.$grey-light;
-			}
 		}
 	}
 }

+ 0 - 4
p/themes/Ansum/_mobile.scss

@@ -188,10 +188,6 @@
 
 	}
 
-	.pagination {
-		margin: 0 0 3.5em;
-	}
-
 	#nav_entries {
 		line-height: 4.5rem;
 	}

+ 4 - 7
p/themes/Ansum/_sidebar.scss

@@ -149,11 +149,11 @@
 	.item {
 		background: variables.$sid-bg;
 
-		@include mixins.transition(all, 0.15s, ease-in-out);
-
 		a {
 			padding: 0 1rem;
 			color: variables.$sid-font-color;
+
+			@include mixins.transition(all, 0.15s, ease-in-out);
 		}
 
 		.error {
@@ -163,9 +163,6 @@
 		}
 
 		&:hover {
-			background: variables.$sid-bg-dark;
-			color: variables.$sid-font-color;
-
 			.error {
 				a {
 					background: variables.$main-first;
@@ -181,7 +178,7 @@
 			}
 
 			a {
-				color: variables.$sid-font-color;
+				background: variables.$sid-bg-dark;
 				text-decoration: none;
 			}
 		}
@@ -205,11 +202,11 @@
 			}
 
 			a {
+				background: variables.$main-first;
 				color: variables.$white;
 				text-decoration: none;
 			}
 		}
-
 	}
 
 	&.empty {

+ 3 - 10
p/themes/Ansum/ansum.css

@@ -637,19 +637,15 @@ form th {
 }
 .nav-list .item {
 	background: #fbf9f6;
-	transition: all 0.15s ease-in-out;
 }
 .nav-list .item a {
 	padding: 0 1rem;
 	color: #363330;
+	transition: all 0.15s ease-in-out;
 }
 .nav-list .item .error a {
 	color: #f5633e;
 }
-.nav-list .item:hover {
-	background: #efe3d3;
-	color: #363330;
-}
 .nav-list .item:hover .error a {
 	background: #ca7227;
 	color: #363330;
@@ -659,7 +655,7 @@ form th {
 	color: #363330;
 }
 .nav-list .item:hover a {
-	color: #363330;
+	background: #efe3d3;
 	text-decoration: none;
 }
 .nav-list .item.active {
@@ -675,6 +671,7 @@ form th {
 	color: #fff;
 }
 .nav-list .item.active a {
+	background: #ca7227;
 	color: #fff;
 	text-decoration: none;
 }
@@ -1531,10 +1528,6 @@ form th {
 		margin-bottom: 1rem;
 	}
 
-	.pagination {
-		margin: 0 0 3.5em;
-	}
-
 	#nav_entries {
 		line-height: 4.5rem;
 	}

+ 3 - 10
p/themes/Ansum/ansum.rtl.css

@@ -637,19 +637,15 @@ form th {
 }
 .nav-list .item {
 	background: #fbf9f6;
-	transition: all 0.15s ease-in-out;
 }
 .nav-list .item a {
 	padding: 0 1rem;
 	color: #363330;
+	transition: all 0.15s ease-in-out;
 }
 .nav-list .item .error a {
 	color: #f5633e;
 }
-.nav-list .item:hover {
-	background: #efe3d3;
-	color: #363330;
-}
 .nav-list .item:hover .error a {
 	background: #ca7227;
 	color: #363330;
@@ -659,7 +655,7 @@ form th {
 	color: #363330;
 }
 .nav-list .item:hover a {
-	color: #363330;
+	background: #efe3d3;
 	text-decoration: none;
 }
 .nav-list .item.active {
@@ -675,6 +671,7 @@ form th {
 	color: #fff;
 }
 .nav-list .item.active a {
+	background: #ca7227;
 	color: #fff;
 	text-decoration: none;
 }
@@ -1531,10 +1528,6 @@ form th {
 		margin-bottom: 1rem;
 	}
 
-	.pagination {
-		margin: 0 0 3.5em;
-	}
-
 	#nav_entries {
 		line-height: 4.5rem;
 	}

+ 6 - 14
p/themes/BlueLagoon/BlueLagoon.css

@@ -277,23 +277,17 @@ a.btn {
 	font-size: 0.9rem;
 }
 
-.nav-list .item:hover {
+.nav-list .item a:hover {
 	text-shadow: 0 0 2px rgba(255,255,255,0.28);
 	color: #fff;
 }
 
-.nav-list .item.active {
+.nav-list .item.active a {
 	margin: 0;
 	background: linear-gradient(180deg,  #0090ff 0%, #0062be 100%) #e4992c;
 	background: -webkit-linear-gradient(top,  #0090ff 0%, #0062be 100%);
-	box-shadow: -1px 2px 2px #171717, 0px 1px rgba(255, 255, 255, 0.08) inset;
-	border-width: medium medium 1px;
-	border-style: none none solid;
-	border-color: -moz-use-text-color -moz-use-text-color #171717;
-}
-
-.nav-list .item.active a {
 	color: #fff;
+	border-color: -moz-use-text-color -moz-use-text-color #171717;
 }
 
 .nav-list .disable {
@@ -504,14 +498,12 @@ a.btn {
 
 .pagination .item a:hover {
 	background: #ddd;
+	color: inherit;
 }
 
-.pagination:first-child .item {
-	border-bottom: 1px solid #aaa;
-}
-
-.pagination:last-child .item {
+.pagination .item {
 	border-top: 1px solid #ddd;
+	border-bottom: 1px solid #ddd;
 }
 
 /*=== Boxes */

+ 6 - 14
p/themes/BlueLagoon/BlueLagoon.rtl.css

@@ -277,23 +277,17 @@ a.btn {
 	font-size: 0.9rem;
 }
 
-.nav-list .item:hover {
+.nav-list .item a:hover {
 	text-shadow: 0 0 2px rgba(255,255,255,0.28);
 	color: #fff;
 }
 
-.nav-list .item.active {
+.nav-list .item.active a {
 	margin: 0;
 	background: linear-gradient(-180deg,  #0090ff 0%, #0062be 100%) #e4992c;
 	background: -webkit-linear-gradient(top,  #0090ff 0%, #0062be 100%);
-	box-shadow: 1px 2px 2px #171717, 0px 1px rgba(255, 255, 255, 0.08) inset;
-	border-width: medium medium 1px;
-	border-style: none none solid;
-	border-color: -moz-use-text-color -moz-use-text-color #171717;
-}
-
-.nav-list .item.active a {
 	color: #fff;
+	border-color: -moz-use-text-color -moz-use-text-color #171717;
 }
 
 .nav-list .disable {
@@ -504,14 +498,12 @@ a.btn {
 
 .pagination .item a:hover {
 	background: #ddd;
+	color: inherit;
 }
 
-.pagination:first-child .item {
-	border-bottom: 1px solid #aaa;
-}
-
-.pagination:last-child .item {
+.pagination .item {
 	border-top: 1px solid #ddd;
+	border-bottom: 1px solid #ddd;
 }
 
 /*=== Boxes */

+ 2 - 5
p/themes/Dark/dark.css

@@ -260,7 +260,7 @@ a.btn {
 	font-size: 0.9rem;
 }
 
-.nav-list .item:hover {
+.nav-list .item a:hover {
 	background: #26303f;
 }
 
@@ -462,11 +462,8 @@ a.btn {
 }
 
 .pagination:first-child .item {
-	border-bottom: 1px solid #333;
-}
-
-.pagination:last-child .item {
 	border-top: 1px solid #333;
+	border-bottom: 1px solid #333;
 }
 
 #load_more.loading,

+ 2 - 5
p/themes/Dark/dark.rtl.css

@@ -260,7 +260,7 @@ a.btn {
 	font-size: 0.9rem;
 }
 
-.nav-list .item:hover {
+.nav-list .item a:hover {
 	background: #26303f;
 }
 
@@ -462,11 +462,8 @@ a.btn {
 }
 
 .pagination:first-child .item {
-	border-bottom: 1px solid #333;
-}
-
-.pagination:last-child .item {
 	border-top: 1px solid #333;
+	border-bottom: 1px solid #333;
 }
 
 #load_more.loading,

+ 1 - 19
p/themes/Flat/flat.css

@@ -265,13 +265,12 @@ a.btn {
 	font-size: 0.9rem;
 }
 
-.nav-list .item:hover,
+.nav-list .item a:hover,
 .nav-list .item.active {
 	background: #2980b9;
 	color: #fff;
 }
 
-.nav-list .item:hover a,
 .nav-list .item.active a {
 	color: #fff;
 }
@@ -448,27 +447,10 @@ a.btn {
 .pagination {
 	background: #ecf0f1;
 	color: #000;
-	font-size: 0.8em;
-	text-align: center;
-}
-
-.content .pagination {
-	margin: 0;
-	padding: 0;
-}
-
-.pagination .item.pager-current {
-	background: #34495e;
-	color: #ecf0f1;
-	font-size: 1.5em;
-	font-weight: bold;
 }
 
 .pagination .item a {
-	display: block;
-	font-style: italic;
 	line-height: 3em;
-	text-decoration: none;
 	color: #000;
 }
 

+ 1 - 19
p/themes/Flat/flat.rtl.css

@@ -265,13 +265,12 @@ a.btn {
 	font-size: 0.9rem;
 }
 
-.nav-list .item:hover,
+.nav-list .item a:hover,
 .nav-list .item.active {
 	background: #2980b9;
 	color: #fff;
 }
 
-.nav-list .item:hover a,
 .nav-list .item.active a {
 	color: #fff;
 }
@@ -448,27 +447,10 @@ a.btn {
 .pagination {
 	background: #ecf0f1;
 	color: #000;
-	font-size: 0.8em;
-	text-align: center;
-}
-
-.content .pagination {
-	margin: 0;
-	padding: 0;
-}
-
-.pagination .item.pager-current {
-	background: #34495e;
-	color: #ecf0f1;
-	font-size: 1.5em;
-	font-weight: bold;
 }
 
 .pagination .item a {
-	display: block;
-	font-style: italic;
 	line-height: 3em;
-	text-decoration: none;
 	color: #000;
 }
 

+ 0 - 5
p/themes/Mapco/_components.scss

@@ -180,11 +180,6 @@
 			font-style: italic;
 			line-height: 3em;
 			text-decoration: none;
-
-			&:hover {
-				background: variables.$main-font-color;
-				color: variables.$grey-light;
-			}
 		}
 	}
 

+ 0 - 4
p/themes/Mapco/_mobile.scss

@@ -188,10 +188,6 @@
 
 	}
 
-	.pagination {
-		margin: 0 0 3.5em;
-	}
-
 	#nav_entries {
 		line-height: 4.5rem;
 	}

+ 5 - 7
p/themes/Mapco/_sidebar.scss

@@ -146,12 +146,13 @@
 
 	.item {
 		background: variables.$sid-bg;
-
-		@include mixins.transition(all, 0.15s, ease-in-out);
+		color: variables.$white;
 
 		a {
 			padding: 0 1rem;
 			color: variables.$sid-font-color;
+
+			@include mixins.transition(all, 0.15s, ease-in-out);
 		}
 
 		.error {
@@ -161,9 +162,6 @@
 		}
 
 		&:hover {
-			background: variables.$sid-bg-dark;
-			color: variables.$sid-font-color;
-
 			.error {
 				a {
 					background: variables.$main-first;
@@ -179,7 +177,7 @@
 			}
 
 			a {
-				color: variables.$sid-font-color;
+				background: variables.$sid-bg-dark;
 				text-decoration: none;
 			}
 		}
@@ -203,11 +201,11 @@
 			}
 
 			a {
+				background: variables.$main-first;
 				color: variables.$white;
 				text-decoration: none;
 			}
 		}
-
 	}
 
 	&.empty {

+ 4 - 10
p/themes/Mapco/mapco.css

@@ -628,19 +628,16 @@ form th {
 }
 .nav-list .item {
 	background: #303136;
-	transition: all 0.15s ease-in-out;
+	color: #fff;
 }
 .nav-list .item a {
 	padding: 0 1rem;
 	color: #ffffff;
+	transition: all 0.15s ease-in-out;
 }
 .nav-list .item .error a {
 	color: #f5633e;
 }
-.nav-list .item:hover {
-	background: #17181a;
-	color: #ffffff;
-}
 .nav-list .item:hover .error a {
 	background: #36c;
 	color: #ffffff;
@@ -650,7 +647,7 @@ form th {
 	color: #ffffff;
 }
 .nav-list .item:hover a {
-	color: #ffffff;
+	background: #17181a;
 	text-decoration: none;
 }
 .nav-list .item.active {
@@ -666,6 +663,7 @@ form th {
 	color: #fff;
 }
 .nav-list .item.active a {
+	background: #36c;
 	color: #fff;
 	text-decoration: none;
 }
@@ -1520,10 +1518,6 @@ form th {
 		margin-bottom: 1rem;
 	}
 
-	.pagination {
-		margin: 0 0 3.5em;
-	}
-
 	#nav_entries {
 		line-height: 4.5rem;
 	}

+ 4 - 10
p/themes/Mapco/mapco.rtl.css

@@ -628,19 +628,16 @@ form th {
 }
 .nav-list .item {
 	background: #303136;
-	transition: all 0.15s ease-in-out;
+	color: #fff;
 }
 .nav-list .item a {
 	padding: 0 1rem;
 	color: #ffffff;
+	transition: all 0.15s ease-in-out;
 }
 .nav-list .item .error a {
 	color: #f5633e;
 }
-.nav-list .item:hover {
-	background: #17181a;
-	color: #ffffff;
-}
 .nav-list .item:hover .error a {
 	background: #36c;
 	color: #ffffff;
@@ -650,7 +647,7 @@ form th {
 	color: #ffffff;
 }
 .nav-list .item:hover a {
-	color: #ffffff;
+	background: #17181a;
 	text-decoration: none;
 }
 .nav-list .item.active {
@@ -666,6 +663,7 @@ form th {
 	color: #fff;
 }
 .nav-list .item.active a {
+	background: #36c;
 	color: #fff;
 	text-decoration: none;
 }
@@ -1520,10 +1518,6 @@ form th {
 		margin-bottom: 1rem;
 	}
 
-	.pagination {
-		margin: 0 0 3.5em;
-	}
-
 	#nav_entries {
 		line-height: 4.5rem;
 	}

+ 10 - 0
p/themes/Origine/origine.css

@@ -1060,6 +1060,16 @@ a.btn {
 
 /*=== LOGS */
 /*=========*/
+.pagination .item.active {
+	background-color: #0062be;
+	color: white;
+}
+
+#loglist td {
+	font-family: monospace;
+}
+
+/****old******/
 .loglist {
 	border: 1px solid #aaa;
 	border-radius: 5px;

+ 10 - 0
p/themes/Origine/origine.rtl.css

@@ -1060,6 +1060,16 @@ a.btn {
 
 /*=== LOGS */
 /*=========*/
+.pagination .item.active {
+	background-color: #0062be;
+	color: white;
+}
+
+#loglist td {
+	font-family: monospace;
+}
+
+/****old******/
 .loglist {
 	border: 1px solid #aaa;
 	border-radius: 5px;

+ 2 - 1
p/themes/Screwdriver/screwdriver.css

@@ -277,7 +277,7 @@ a.btn {
 	font-size: 0.9rem;
 }
 
-.nav-list .item:hover {
+.nav-list .item a:hover {
 	text-shadow: 0 0 2px rgba(255,255,255,0.28);
 	color: #fff;
 }
@@ -493,6 +493,7 @@ a.btn {
 
 .pagination .item a:hover {
 	background: #ddd;
+	color: inherit
 }
 
 .pagination:first-child .item {

+ 2 - 1
p/themes/Screwdriver/screwdriver.rtl.css

@@ -277,7 +277,7 @@ a.btn {
 	font-size: 0.9rem;
 }
 
-.nav-list .item:hover {
+.nav-list .item a:hover {
 	text-shadow: 0 0 2px rgba(255,255,255,0.28);
 	color: #fff;
 }
@@ -493,6 +493,7 @@ a.btn {
 
 .pagination .item a:hover {
 	background: #ddd;
+	color: inherit
 }
 
 .pagination:first-child .item {

+ 9 - 8
p/themes/Swage/swage.css

@@ -231,22 +231,25 @@ form th {
 	color: #fcfcfc;
 	cursor: default;
 }
-.nav-list .item:hover, .nav-list .item.active {
+.nav-list .item a:hover {
 	background: #00488b;
 	color: #fcfcfc;
 }
-.nav-list .item:hover a, .nav-list .item.active a {
+.nav-list .item.active {
+	background: #00488b;
+	color: #fcfcfc;
+}
+.nav-list .item.active a {
 	color: #fcfcfc;
 }
-.nav-list .item:hover.empty a,
-.nav-list .item:hover .error a, .nav-list .item.active.empty a,
+.nav-list .item.active.empty a,
 .nav-list .item.active .error a {
 	color: #fcfcfc;
 }
-.nav-list .item:hover.empty a, .nav-list .item.active.empty a {
+.nav-list .item.active.empty a {
 	background: #fa8052;
 }
-.nav-list .item:hover.error a, .nav-list .item.active.error a {
+.nav-list .item.active.error a {
 	background: #c46178;
 }
 .nav-list .item > a {
@@ -1170,5 +1173,3 @@ button.as-link {
 #slider .form-group:hover {
 	background: initial;
 }
-
-/*# sourceMappingURL=swage.css.map */

+ 9 - 6
p/themes/Swage/swage.rtl.css

@@ -231,22 +231,25 @@ form th {
 	color: #fcfcfc;
 	cursor: default;
 }
-.nav-list .item:hover, .nav-list .item.active {
+.nav-list .item a:hover {
 	background: #00488b;
 	color: #fcfcfc;
 }
-.nav-list .item:hover a, .nav-list .item.active a {
+.nav-list .item.active {
+	background: #00488b;
+	color: #fcfcfc;
+}
+.nav-list .item.active a {
 	color: #fcfcfc;
 }
-.nav-list .item:hover.empty a,
-.nav-list .item:hover .error a, .nav-list .item.active.empty a,
+.nav-list .item.active.empty a,
 .nav-list .item.active .error a {
 	color: #fcfcfc;
 }
-.nav-list .item:hover.empty a, .nav-list .item.active.empty a {
+.nav-list .item.active.empty a {
 	background: #fa8052;
 }
-.nav-list .item:hover.error a, .nav-list .item.active.error a {
+.nav-list .item.active.error a {
 	background: #c46178;
 }
 .nav-list .item > a {

+ 5 - 1
p/themes/Swage/swage.scss

@@ -289,7 +289,11 @@ form {
 
 		@extend %nav-list;
 
-		&:hover,
+		a:hover {
+			background: color.adjust( $color_nav, $lightness: -10%);
+			color: $color_light;
+		}
+
 		&.active {
 			background: color.adjust( $color_nav, $lightness: -10%);
 			color: $color_light;

+ 24 - 5
p/themes/base-theme/template.css

@@ -609,22 +609,31 @@ input[type="checkbox"]:focus-visible {
 
 /*=== Pagination */
 .pagination {
-	margin: 0;
+	margin: 2em auto;
 	padding: 0;
 	display: table;
-	width: 100%;
 	table-layout: fixed;
 }
 
 .pagination .item {
 	display: table-cell;
+	width: 3em;
+	text-align: center;
+}
+
+.pagination .item.active {
+	min-width: 3em;
+	font-weight: bold;
 }
 
-.pagination .pager-first,
 .pagination .pager-previous,
-.pagination .pager-next,
+.pagination .pager-next {
+	width: 6em;
+}
+
+.pagination .pager-first,
 .pagination .pager-last {
-	width: 100px;
+	width: 7.5em;
 }
 
 /*=== Boxes */
@@ -1515,6 +1524,12 @@ input:checked + .slide-container .properties {
 
 /*=== DIVERS */
 /*===========*/
+.log-error,
+.log-warning,
+.log-notice {
+	text-align: center;
+}
+
 .category .title.error::before {
 	content: "⚠ ";
 	color: #bd362f;
@@ -1612,6 +1627,10 @@ input:checked + .slide-container .properties {
 	display: none;
 }
 
+#loglist-wrapper {
+	overflow-x: auto;
+}
+
 /*=== MOBILE */
 /*===========*/
 

+ 24 - 5
p/themes/base-theme/template.rtl.css

@@ -609,22 +609,31 @@ input[type="checkbox"]:focus-visible {
 
 /*=== Pagination */
 .pagination {
-	margin: 0;
+	margin: 2em auto;
 	padding: 0;
 	display: table;
-	width: 100%;
 	table-layout: fixed;
 }
 
 .pagination .item {
 	display: table-cell;
+	width: 3em;
+	text-align: center;
+}
+
+.pagination .item.active {
+	min-width: 3em;
+	font-weight: bold;
 }
 
-.pagination .pager-first,
 .pagination .pager-previous,
-.pagination .pager-next,
+.pagination .pager-next {
+	width: 6em;
+}
+
+.pagination .pager-first,
 .pagination .pager-last {
-	width: 100px;
+	width: 7.5em;
 }
 
 /*=== Boxes */
@@ -1515,6 +1524,12 @@ input:checked + .slide-container .properties {
 
 /*=== DIVERS */
 /*===========*/
+.log-error,
+.log-warning,
+.log-notice {
+	text-align: center;
+}
+
 .category .title.error::before {
 	content: "⚠ ";
 	color: #bd362f;
@@ -1612,6 +1627,10 @@ input:checked + .slide-container .properties {
 	display: none;
 }
 
+#loglist-wrapper {
+	overflow-x: auto;
+}
+
 /*=== MOBILE */
 /*===========*/
 

+ 4 - 0
p/themes/icons/error.svg

@@ -0,0 +1,4 @@
+<svg viewBox="0 0 16 16" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2" xmlns="http://www.w3.org/2000/svg">
+  <circle cx="116.818" cy="290.931" r="50.694" style="fill:none;stroke:#d40000;stroke-width:14.166;stroke-opacity:1" transform="matrix(.12944 0 0 .12944 -7.12 -29.657)"/>
+  <path fill="#666" d="M5.146 5.144h.736a.743.743 0 0 1 .491.224l1.629 1.627 1.65-1.627c.19-.165.319-.215.491-.222h.714v.714c0 .204-.025.393-.179.535L9.05 8.022l1.606 1.606c.134.136.2.321.2.514v.714h-.714a.723.723 0 0 1-.512-.2L8 9.028l-1.628 1.627a.719.719 0 0 1-.514.2h-.713v-.714c0-.19.067-.379.201-.513l1.628-1.606-1.627-1.627a.647.647 0 0 1-.202-.536v-.713Z" color="#bebebe" style="text-indent:0;text-align:start;text-transform:none;stroke-width:.713684"/>
+</svg>

+ 5 - 0
p/themes/icons/notice.svg

@@ -0,0 +1,5 @@
+<svg viewBox="0 0 16 16" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2" xmlns="http://www.w3.org/2000/svg">
+  <circle style="fill:#666;fill-opacity:1;stroke:none;stroke-width:1.47316;stroke-linecap:round;stroke-opacity:1" cx="-8" cy="-4.966" r="1.377" transform="scale(-1)"/>
+  <rect style="fill:#666;fill-opacity:1;stroke:#666;stroke-width:.88443;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1" width="1.809" height="4.623" x="-8.904" y="-12.022" ry="0" transform="scale(-1)"/>
+  <rect style="fill:none;fill-opacity:1;stroke:#666;stroke-width:1.743;stroke-linecap:square;stroke-miterlimit:2;stroke-dasharray:none;stroke-opacity:1;stroke-linejoin:miter" width="11.757" height="11.757" x="2.121" y="2.121" ry="0"/>
+</svg>

+ 5 - 0
p/themes/icons/warning.svg

@@ -0,0 +1,5 @@
+<svg viewBox="0 0 16 16" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2" xmlns="http://www.w3.org/2000/svg">
+  <path style="color:#000;clip-rule:nonzero;fill:#666;fill-rule:nonzero;stroke-width:.953325;stroke-linecap:round;stroke-linejoin:miter;-inkscape-stroke:none;paint-order:markers stroke fill" d="M8 1.595.447 14.405h15.106Zm0 3.323 4.525 7.836h-9.05Z"/>
+  <circle style="fill:#666;fill-opacity:1;stroke:none;stroke-width:.641916;stroke-linecap:round;stroke-opacity:1" cx="8" cy="11.275" r=".6"/>
+  <rect style="fill:#666;fill-opacity:1;stroke:#666;stroke-width:.387856;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1" width=".612" height="2.628" x="7.694" y="7.212" ry="0"/>
+</svg>