return array('prefix' => '#^/'.$prefix.'/', 'urls' => array(
array('controller' => 'IPF_Admin_Dashboard_Controller', 'urls' => array(
array('regex' => '$#', 'func' => 'index'),
+ array('regex' => 'log/$#', 'func' => 'log'),
)),
array('controller' => 'IPF_Admin_FileBrowser_Controller', 'urls' => array(
array('regex' => 'filebrowser/rename/$#', 'method' => 'POST', 'func' => 'rename'),
#user-tools span {font-size:9px}
/* SIDEBAR */
-#content-related h3 { font-size:12px; color:#666; margin-bottom:3px; }
-#content-related h4 { font-size:11px; }
#content-related .module h2 { background: linear-gradient(to top, #e1e1e1, #fff 16px); color:#666 }
+#content-related a.all { display: block; text-align: center; margin: 10px 0; }
/*
* Dashboard
.dashboard .module table td { white-space:nowrap; }
.dashboard .module table td a { display:block; padding-right:.6em; }
/* RECENT ACTIONS MODULE */
-.dashboard ul.actionlist { margin-left:0; }
+.dashboard ul.actionlist { margin: 10px 0; }
.dashboard ul.actionlist li { list-style-type:none; }
/*
);
return $this->render('admin/index.html', $context);
}
+
+ function log()
+ {
+ $currentPage = (int)@$this->request->GET['page'];
+ if (!$currentPage)
+ $currentPage = 1;
+
+ $count = IPF_Admin_Log::count();
+
+ $perPage = 20;
+ $pagerLayout = new IPF_Pager_Layout;
+ $pages = $pagerLayout->layout($currentPage, ceil($count / $perPage));
+
+ $context = array(
+ 'page_title' => __('Recent Actions'),
+ 'admin_log' => IPF_Admin_Log::recent($perPage, ($currentPage - 1) * $perPage),
+ 'count' => $count,
+ 'current_page' => $currentPage,
+ 'pages' => $pages,
+ );
+ return $this->render('admin/log.html', $context);
+ }
}
class IPF_Admin_Log
{
- public static function recent()
+ public static function count()
+ {
+ return \PFF\Container::databaseQuery()
+ ->from('admin_log')
+ ->select('COUNT(1) AS cnt')
+ ->fetch('cnt');
+ }
+
+ public static function recent($limit=10, $offset=0)
{
return \PFF\Container::databaseQuery()
->from('admin_log')
->orderBy('created_at DESC')
- ->limit(10)
+ ->limit($limit)
+ ->offset($offset)
->asObject(true)
->fetchAll();
}
{/foreach}
</div>
<div id="content-related">
- <div class="module" id="recent-actions-module">
+ <div class="module">
<h2>{trans 'Recent Actions'}</h2>
- <h3>{trans 'My Actions'}</h3>
<ul class="actionlist">
{foreach $admin_log as $log}
<li class="{$log.action}link">
</li>
{/foreach}
</ul>
+ <a class="all" href="{url array('IPF_Admin_Dashboard_Controller', 'log')}">{trans 'View all'}</a>
</div>
- </div-->
+ </div>
<br class="clear" />
</div>
{/block}
--- /dev/null
+{extends "admin/base.html"}
+
+{block breadcrumbs}<div class="breadcrumbs"><a href="{url array('IPF_Admin_Dashboard_Controller', 'index')}">{trans 'Home'}</a> » {$page_title}</div>{/block}
+
+{block content}
+<div id="content" class="flex">
+ <h1>{$page_title}</h1>
+ <div id="content-main">
+ <div id="changelist" class="module">
+
+ <div id="items-grid-container">
+ <table id="items-grid">
+ <thead>
+ <tr class="nodrop">
+ <th>{trans 'Action'}</th>
+ <th>{trans 'Type'}</th>
+ <th>{trans 'When'}</th>
+ <th>{trans 'Who'}</th>
+ </tr>
+ </thead>
+ <tbody>
+ {foreach $admin_log as $log}
+ <tr>
+ <td class="{$log.action}link">
+ {if $log.object_url}
+ <a href="{$log.object_url}">{$log.object_repr}</a>
+ {else}
+ {$log.object_repr}
+ {/if}
+ </td>
+ <td>{$log.object_class}</td>
+ <td>{$log.created_at|datetime:'%b %e, %Y %H:%M:%S'}</td>
+ <td>{$log.username}</td>
+ </tr>
+ {/foreach}
+ </tbody>
+ </table>
+
+ <p class="paginator">
+ {foreach $pages as $p}
+ {if $p}
+ {if $p == $current_page}
+ <span class="this-page">{$p}</span>
+ {else}
+ <a href="?{params $request->GET, 'page', $p}">{$p}</a>
+ {/if}
+ {else}
+ …
+ {/if}
+ {/foreach}
+ {$count} log records
+ </p>
+ </div>
+
+ </div>
+ </div>
+ <br class="clear" />
+</div>
+{/block}
+