Ver Fonte

2914 show last login date (#2936)

* Add new last_login param to default user config

* Add English translation strings for last login feature

* Update last_login when user successfully logs in.

* Add last_login column to manage users screen

* Add last_login to user details screen

* Remove accidental docker-compose.yml

* Fix whitespace

* Use last modified time for config file

* Remove last_login field from default user config

* Touch user configuration file upon succesful login

* Add translations with todos

* Fix whitespace

* Use last_user_activity

* Semi-colomn

Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
equinoxmatt há 5 anos atrás
pai
commit
be10486f5e

+ 1 - 0
app/Controllers/userController.php

@@ -616,6 +616,7 @@ class FreshRSS_user_Controller extends Minz_ActionController {
 			'language' => $userConfiguration->language,
 			'mail_login' => $userConfiguration->mail_login,
 			'is_admin' => $userConfiguration->is_admin,
+			'last_user_activity' => date('c', FreshRSS_UserDAO::mtime($username)),
 		);
 	}
 }

+ 1 - 0
app/i18n/cz/admin.php

@@ -193,6 +193,7 @@ return array(
 		'feed_count' => 'Feeds',	// TODO - Translation
 		'is_admin' => 'Is admin',	// TODO - Translation
 		'language' => 'Jazyk',
+		'last_user_activity' => 'Last user activity',	// TODO - Translation
 		'list' => 'User list',	// TODO - Translation
 		'number' => 'Zatím je vytvořen %d účet',
 		'numbers' => 'Zatím je vytvořeno %d účtů',

+ 1 - 0
app/i18n/de/admin.php

@@ -193,6 +193,7 @@ return array(
 		'feed_count' => 'Feeds',	// TODO - Translation
 		'is_admin' => 'Is admin',	// TODO - Translation
 		'language' => 'Sprache',
+		'last_user_activity' => 'Last user activity',	// TODO - Translation
 		'list' => 'User list',	// TODO - Translation
 		'number' => 'Es wurde bis jetzt %d Account erstellt',
 		'numbers' => 'Es wurden bis jetzt %d Accounts erstellt',

+ 1 - 0
app/i18n/en/admin.php

@@ -193,6 +193,7 @@ return array(
 		'feed_count' => 'Feeds',
 		'is_admin' => 'Is admin',
 		'language' => 'Language',
+		'last_user_activity' => 'Last user activity',
 		'list' => 'User list',
 		'number' => 'There is %d account created',
 		'numbers' => 'There are %d accounts created',

+ 1 - 0
app/i18n/es/admin.php

@@ -193,6 +193,7 @@ return array(
 		'feed_count' => 'Feeds',	// TODO - Translation
 		'is_admin' => 'Is admin',	// TODO - Translation
 		'language' => 'Idioma',
+		'last_user_activity' => 'Last user activity',	// TODO - Translation
 		'list' => 'User list',	// TODO - Translation
 		'number' => 'Hay %d cuenta creada',
 		'numbers' => 'Hay %d cuentas creadas',

+ 1 - 0
app/i18n/fr/admin.php

@@ -193,6 +193,7 @@ return array(
 		'feed_count' => 'Flux',
 		'is_admin' => 'Admin ?',
 		'language' => 'Langue',
+		'last_user_activity' => 'Dernière activité utilisateur',
 		'list' => 'Liste des utilisateurs',
 		'number' => '%d compte a déjà été créé',
 		'numbers' => '%d comptes ont déjà été créés',

+ 1 - 0
app/i18n/he/admin.php

@@ -193,6 +193,7 @@ return array(
 		'feed_count' => 'Feeds',	// TODO - Translation
 		'is_admin' => 'Is admin',	// TODO - Translation
 		'language' => 'שפה',
+		'last_user_activity' => 'Last user activity',	// TODO - Translation
 		'list' => 'User list',	// TODO - Translation
 		'number' => 'There is %d account created',	// TODO - Translation
 		'numbers' => 'There are %d accounts created',	// TODO - Translation

+ 1 - 0
app/i18n/it/admin.php

@@ -193,6 +193,7 @@ return array(
 		'feed_count' => 'Feeds',	// TODO - Translation
 		'is_admin' => 'Is admin',	// TODO - Translation
 		'language' => 'Lingua',
+		'last_user_activity' => 'Last user activity',	// TODO - Translation
 		'list' => 'User list',	// TODO - Translation
 		'number' => ' %d profilo utente creato',
 		'numbers' => 'Sono presenti %d profili utente',

+ 1 - 0
app/i18n/kr/admin.php

@@ -193,6 +193,7 @@ return array(
 		'feed_count' => 'Feeds',	// TODO - Translation
 		'is_admin' => 'Is admin',	// TODO - Translation
 		'language' => '언어',
+		'last_user_activity' => 'Last user activity',	// TODO - Translation
 		'list' => 'User list',	// TODO - Translation
 		'number' => '%d 개의 계정이 생성되었습니다',
 		'numbers' => '%d 개의 계정이 생성되었습니다',

+ 2 - 1
app/i18n/nl/admin.php

@@ -193,6 +193,7 @@ return array(
 		'feed_count' => 'Feeds',	// TODO - Translation
 		'is_admin' => 'Is admin',	// TODO - Translation
 		'language' => 'Taal',
+		'last_user_activity' => 'Last user activity',	// TODO - Translation
 		'list' => 'User list',	// TODO - Translation
 		'number' => 'Er is %d accounts gemaakt',
 		'numbers' => 'Er zijn %d accounts gemaakt',
@@ -203,6 +204,6 @@ return array(
 		'update_users' => 'Gebruiker bijwerken',
 		'username' => 'Gebruikersnaam',
 		'users' => 'Gebruikers',
-		'user_list' => 'Lijst van gebruikers ',
+		'user_list' => 'Lijst van gebruikers',
 	),
 );

+ 1 - 0
app/i18n/oc/admin.php

@@ -194,6 +194,7 @@ return array(
 		'is_admin' => 'Es admin',
 		'language' => 'Lenga',
 		'list' => 'Lista dels utilizaires',
+		'last_user_activity' => 'Last user activity',	// TODO - Translation
 		'number' => '%d compte ja creat',
 		'numbers' => '%d comptes ja creats',
 		'password_form' => 'Senhal <br /><small>(ex. : per la connexion via formulari)</small>',

+ 1 - 0
app/i18n/pt-br/admin.php

@@ -193,6 +193,7 @@ return array(
 		'feed_count' => 'Feeds',
 		'is_admin' => 'É administrador',
 		'language' => 'Idioma',
+		'last_user_activity' => 'Last user activity',	// TODO - Translation
 		'list' => 'Lista de usuários',
 		'number' => 'Há %d conta criada',
 		'numbers' => 'Há %d contas criadas',

+ 1 - 0
app/i18n/ru/admin.php

@@ -193,6 +193,7 @@ return array(
 		'feed_count' => 'Feeds',	// TODO - Translation
 		'is_admin' => 'Is admin',	// TODO - Translation
 		'language' => 'Язык',
+		'last_user_activity' => 'Last user activity',	// TODO - Translation
 		'list' => 'User list',	// TODO - Translation
 		'number' => 'На данный момент создан %d аккаунт',
 		'numbers' => 'На данный момент аккаунтов создано:	%d',

+ 1 - 0
app/i18n/sk/admin.php

@@ -193,6 +193,7 @@ return array(
 		'feed_count' => 'Feeds',	// TODO - Translation
 		'is_admin' => 'Is admin',	// TODO - Translation
 		'language' => 'Jazyk',
+		'last_user_activity' => 'Last user activity',	// TODO - Translation
 		'list' => 'User list',	// TODO - Translation
 		'number' => 'Je vytvorený používateľ: %d',
 		'numbers' => 'Je vytvorených používateľov: %d',

+ 1 - 0
app/i18n/tr/admin.php

@@ -193,6 +193,7 @@ return array(
 		'feed_count' => 'Feeds',	// TODO - Translation
 		'is_admin' => 'Is admin',	// TODO - Translation
 		'language' => 'Dil',
+		'last_user_activity' => 'Last user activity',	// TODO - Translation
 		'list' => 'User list',	// TODO - Translation
 		'number' => 'Oluşturulmuş %d hesap var',
 		'numbers' => 'Oluşturulmuş %d hesap var',

+ 1 - 0
app/i18n/zh-cn/admin.php

@@ -193,6 +193,7 @@ return array(
 		'feed_count' => '订阅源数',
 		'is_admin' => '管理员',
 		'language' => '语言',
+		'last_user_activity' => 'Last user activity',	// TODO - Translation
 		'list' => '用户列表',
 		'number' => '已有 %d 个用户',
 		'numbers' => '已有 %d 个用户',

+ 7 - 0
app/views/user/details.phtml

@@ -44,6 +44,13 @@
             </div>
         </div>
 
+        <div class="form-group">
+            <label class="group-name"><?= _t('admin.user.last_user_activity') ?></label>
+            <div class="group-controls">
+                <?= $this->details['last_user_activity'] ?>
+            </div>
+        </div>
+
         <div class="form-group">
             <label class="group-name" for="newPasswordPlain"><?= _t('admin.user.password_form') ?></label>
             <div class="group-controls">

+ 3 - 3
app/views/user/manage.phtml

@@ -77,20 +77,20 @@
 				<th><?= _t('admin.user.feed_count') ?></th>
 				<th><?= _t('admin.user.article_count') ?></th>
 				<th><?= _t('admin.user.database_size') ?></th>
-				<th>&nbsp;</th>
+				<th><?= _t('admin.user.last_user_activity') ?></th>
 			</tr>
 		</thead>
 		<tbody>
 			<?php foreach ($this->users as $username => $values) : ?>
 				<tr>
-					<td><?= $username ?></td>
+					<td><a href="<?= _url('user', 'details', 'username', $username) ?>"><?= $username ?></a></td>
 					<td><?= $values['is_admin'] ? '✔' : ' ' ?></td>
 					<td><?= $values['mail_login'] ?></td>
 					<td><?= _t("gen.lang.{$values['language']}") ?></td>
 					<td><?= format_number($values['feed_count']) ?></td>
 					<td><?= format_number($values['article_count']) ?></td>
 					<td><?= format_bytes($values['database_size']) ?></td>
-					<td><a href="<?= _url('user', 'details', 'username', $username) ?>">Details</a></td>
+					<td><?= $values['last_user_activity'] ?></td>
 				</tr>
 			<?php endforeach ?>
 		</tbody>