From ce8799176e8b56d3fbcc1038a9ef5e8e9bf136d6 Mon Sep 17 00:00:00 2001 From: Jason Ge Date: Tue, 4 Oct 2011 23:05:40 -0700 Subject: [PATCH] Add author field to image macro display Summary: this is a request from Facebook: > someone has added macros for common words like 'push', 'lgtm'. > We want to let he image macro page at least attribute to an owner so > that we can publicly shame whoever added the 800px 'clowntown' macro. Test Plan: test macros with/without author (all macro should have author. This is just to be safe). Reviewers: epriestley, nh Reviewed By: epriestley CC: hwang, aran, arice, jungejason, epriestley Differential Revision: 984 --- .../PhabricatorFileMacroListController.php | 17 +++++++++++++++++ .../files/controller/macrolist/__init__.php | 3 +++ 2 files changed, 20 insertions(+) diff --git a/src/applications/files/controller/macrolist/PhabricatorFileMacroListController.php b/src/applications/files/controller/macrolist/PhabricatorFileMacroListController.php index 1cea7a2abe..08d5f91b4f 100644 --- a/src/applications/files/controller/macrolist/PhabricatorFileMacroListController.php +++ b/src/applications/files/controller/macrolist/PhabricatorFileMacroListController.php @@ -42,9 +42,22 @@ class PhabricatorFileMacroListController extends PhabricatorFileController { $pager->setCount($count); $pager->setURI($request->getRequestURI(), 'page'); + $file_phids = mpull($macros, 'getFilePHID'); + $files = id(new PhabricatorFile())->loadAllWhere( + "phid IN (%Ls)", + $file_phids); + $author_phids = mpull($files, 'getAuthorPHID', 'getPHID'); + $handles = id(new PhabricatorObjectHandleData($author_phids)) + ->loadHandles(); + $rows = array(); foreach ($macros as $macro) { $src = PhabricatorFileURI::getViewURIForPHID($macro->getFilePHID()); + $file_phid = $macro->getFilePHID(); + $author_link = isset($author_phids[$file_phid]) + ? $handles[$author_phids[$file_phid]]->renderLink() + : null; + $rows[] = array( phutil_render_tag( 'a', @@ -52,6 +65,8 @@ class PhabricatorFileMacroListController extends PhabricatorFileController { 'href' => '/file/macro/edit/'.$macro->getID().'/', ), phutil_escape_html($macro->getName())), + + $author_link, phutil_render_tag( 'a', array( @@ -78,12 +93,14 @@ class PhabricatorFileMacroListController extends PhabricatorFileController { $table->setHeaders( array( 'Name', + 'Author', 'Image', '', )); $table->setColumnClasses( array( 'pri', + '', 'wide thumb', 'action', )); diff --git a/src/applications/files/controller/macrolist/__init__.php b/src/applications/files/controller/macrolist/__init__.php index ff62074ed8..c90d2596f8 100644 --- a/src/applications/files/controller/macrolist/__init__.php +++ b/src/applications/files/controller/macrolist/__init__.php @@ -7,8 +7,10 @@ phutil_require_module('phabricator', 'applications/files/controller/base'); +phutil_require_module('phabricator', 'applications/files/storage/file'); phutil_require_module('phabricator', 'applications/files/storage/imagemacro'); phutil_require_module('phabricator', 'applications/files/uri'); +phutil_require_module('phabricator', 'applications/phid/handle/data'); phutil_require_module('phabricator', 'infrastructure/javelin/markup'); phutil_require_module('phabricator', 'storage/queryfx'); phutil_require_module('phabricator', 'view/control/pager'); @@ -16,6 +18,7 @@ phutil_require_module('phabricator', 'view/control/table'); phutil_require_module('phabricator', 'view/layout/panel'); phutil_require_module('phutil', 'markup'); +phutil_require_module('phutil', 'utils'); phutil_require_source('PhabricatorFileMacroListController.php');