From d61ac3468bc1147915aed80e25799e3f9b20c4a2 Mon Sep 17 00:00:00 2001 From: Chad Little Date: Fri, 5 Apr 2013 07:40:27 -0700 Subject: [PATCH] PhabricatorActionHeaderView v0 Summary: Initial pass at an action header. The idea is to support current and future planned needs in 'headers' with various colors and icons. The overall goal here is to keep markup light and allow other classes to wrap and extend with more specific features. Test Plan: Tested UIExamples and Workboards. Reviewers: epriestley, btrahan Reviewed By: epriestley CC: aran, Korvin, AnhNhan Differential Revision: https://secure.phabricator.com/D5585 --- resources/sprite/manifest/actions.json | 164 +++++------ resources/sprite/manifest/minicons.json | 20 ++ resources/sprite/minicons_dark_1x/company.png | Bin 0 -> 3893 bytes resources/sprite/minicons_dark_1x/move.png | Bin 0 -> 3893 bytes resources/sprite/minicons_dark_1x/public.png | Bin 0 -> 3893 bytes .../sprite/minicons_dark_1x/restricted.png | Bin 0 -> 3893 bytes resources/sprite/minicons_dark_2x/company.png | Bin 0 -> 6990 bytes resources/sprite/minicons_dark_2x/move.png | Bin 0 -> 6990 bytes resources/sprite/minicons_dark_2x/public.png | Bin 0 -> 6990 bytes .../sprite/minicons_dark_2x/restricted.png | Bin 0 -> 6990 bytes src/__celerity_resource_map__.php | 36 ++- src/__phutil_library_map__.php | 8 +- .../PhabricatorActionHeaderExample.php | 277 ++++++++++++++++++ .../examples/PhabricatorWorkboardExample.php | 8 +- .../celerity/CeleritySpriteGenerator.php | 13 +- .../layout/PhabricatorActionHeaderView.php | 130 ++++++++ src/view/layout/PhabricatorActionIconView.php | 72 +++++ .../layout/PhabricatorWorkboardActionView.php | 35 --- src/view/layout/PhabricatorWorkboardView.php | 2 +- src/view/layout/PhabricatorWorkpanelView.php | 9 +- .../layout/phabricator-action-header-view.css | 58 ++++ .../layout/phabricator-action-icon-view.css | 15 + .../css/layout/phabricator-workboard-view.css | 4 +- .../css/layout/phabricator-workpanel-view.css | 8 +- webroot/rsrc/css/sprite-actions.css | 64 ++-- webroot/rsrc/css/sprite-minicons.css | 20 +- webroot/rsrc/image/sprite-minicons-X2.png | Bin 1937 -> 2830 bytes webroot/rsrc/image/sprite-minicons.png | Bin 965 -> 1848 bytes 28 files changed, 755 insertions(+), 188 deletions(-) create mode 100644 resources/sprite/minicons_dark_1x/company.png create mode 100644 resources/sprite/minicons_dark_1x/move.png create mode 100644 resources/sprite/minicons_dark_1x/public.png create mode 100644 resources/sprite/minicons_dark_1x/restricted.png create mode 100644 resources/sprite/minicons_dark_2x/company.png create mode 100644 resources/sprite/minicons_dark_2x/move.png create mode 100644 resources/sprite/minicons_dark_2x/public.png create mode 100644 resources/sprite/minicons_dark_2x/restricted.png create mode 100644 src/applications/uiexample/examples/PhabricatorActionHeaderExample.php create mode 100644 src/view/layout/PhabricatorActionHeaderView.php create mode 100644 src/view/layout/PhabricatorActionIconView.php delete mode 100644 src/view/layout/PhabricatorWorkboardActionView.php create mode 100644 webroot/rsrc/css/layout/phabricator-action-header-view.css create mode 100644 webroot/rsrc/css/layout/phabricator-action-icon-view.css diff --git a/resources/sprite/manifest/actions.json b/resources/sprite/manifest/actions.json index 5d9760163f..658ab9d611 100644 --- a/resources/sprite/manifest/actions.json +++ b/resources/sprite/manifest/actions.json @@ -1,139 +1,139 @@ { "version" : 1, "sprites" : { - "action-icon-flag-dark" : { - "name" : "action-icon-flag-dark", - "rule" : ".action-icon-flag-dark", + "actions-flag-dark" : { + "name" : "actions-flag-dark", + "rule" : ".actions-flag-dark, .device-desktop .actions-flag-grey.phabricator-action-icon-item-link:hover", "hash" : "4ae54fc28dd2d6cfa6e57dde7bd640cf" }, - "action-icon-flag-grey" : { - "name" : "action-icon-flag-grey", - "rule" : ".action-icon-flag-grey, .device-desktop .phabricator-action-icon-view:hover .action-icon-flag", + "actions-flag-grey" : { + "name" : "actions-flag-grey", + "rule" : ".actions-flag-grey", "hash" : "50e739ca2d6a5527ce2bb8aafd4eb93f" }, - "action-icon-flag-white" : { - "name" : "action-icon-flag-white", - "rule" : ".action-icon-flag-white", + "actions-flag-white" : { + "name" : "actions-flag-white", + "rule" : ".actions-flag-white", "hash" : "d29ba4e3f88d5b2f3b0ea14754f7b89a" }, - "action-icon-heart-dark" : { - "name" : "action-icon-heart-dark", - "rule" : ".action-icon-heart-dark", + "actions-heart-dark" : { + "name" : "actions-heart-dark", + "rule" : ".actions-heart-dark, .device-desktop .actions-heart-grey.phabricator-action-icon-item-link:hover", "hash" : "90b437a281724a4961e33272eafd616b" }, - "action-icon-heart-grey" : { - "name" : "action-icon-heart-grey", - "rule" : ".action-icon-heart-grey, .device-desktop .phabricator-action-icon-view:hover .action-icon-heart", + "actions-heart-grey" : { + "name" : "actions-heart-grey", + "rule" : ".actions-heart-grey", "hash" : "cd521a7267b321516223462860373f09" }, - "action-icon-heart-white" : { - "name" : "action-icon-heart-white", - "rule" : ".action-icon-heart-white", + "actions-heart-white" : { + "name" : "actions-heart-white", + "rule" : ".actions-heart-white", "hash" : "505ebd7324f9c39fa2366a85996d1194" }, - "action-icon-move-dark" : { - "name" : "action-icon-move-dark", - "rule" : ".action-icon-move-dark", + "actions-move-dark" : { + "name" : "actions-move-dark", + "rule" : ".actions-move-dark, .device-desktop .actions-move-grey.phabricator-action-icon-item-link:hover", "hash" : "38f5b9168bf04d1a904b09805e589cd7" }, - "action-icon-move-grey" : { - "name" : "action-icon-move-grey", - "rule" : ".action-icon-move-grey, .device-desktop .phabricator-action-icon-view:hover .action-icon-move", + "actions-move-grey" : { + "name" : "actions-move-grey", + "rule" : ".actions-move-grey", "hash" : "35dcc45f04a81cbf9e5ecdf0fcd5bebc" }, - "action-icon-move-white" : { - "name" : "action-icon-move-white", - "rule" : ".action-icon-move-white", + "actions-move-white" : { + "name" : "actions-move-white", + "rule" : ".actions-move-white", "hash" : "2b1b790a494a079d288d5a3a47c6bd62" }, - "action-icon-new-dark" : { - "name" : "action-icon-new-dark", - "rule" : ".action-icon-new-dark", + "actions-new-dark" : { + "name" : "actions-new-dark", + "rule" : ".actions-new-dark, .device-desktop .actions-new-grey.phabricator-action-icon-item-link:hover", "hash" : "52c45b76d0dbd51e6eb65f0597d5098a" }, - "action-icon-new-grey" : { - "name" : "action-icon-new-grey", - "rule" : ".action-icon-new-grey, .device-desktop .phabricator-action-icon-view:hover .action-icon-new", + "actions-new-grey" : { + "name" : "actions-new-grey", + "rule" : ".actions-new-grey", "hash" : "c51315bd83a20806625ca3a887f86215" }, - "action-icon-new-white" : { - "name" : "action-icon-new-white", - "rule" : ".action-icon-new-white", + "actions-new-white" : { + "name" : "actions-new-white", + "rule" : ".actions-new-white", "hash" : "5a344c62e037d672516dae0e3a8dd589" }, - "action-icon-search-dark" : { - "name" : "action-icon-search-dark", - "rule" : ".action-icon-search-dark", + "actions-search-dark" : { + "name" : "actions-search-dark", + "rule" : ".actions-search-dark, .device-desktop .actions-search-grey.phabricator-action-icon-item-link:hover", "hash" : "6ff124bc9423bf98be5a53e22508cd26" }, - "action-icon-search-grey" : { - "name" : "action-icon-search-grey", - "rule" : ".action-icon-search-grey, .device-desktop .phabricator-action-icon-view:hover .action-icon-search", + "actions-search-grey" : { + "name" : "actions-search-grey", + "rule" : ".actions-search-grey", "hash" : "57b5c47c0676da7f97d3b2f7eefbbea4" }, - "action-icon-search-white" : { - "name" : "action-icon-search-white", - "rule" : ".action-icon-search-white", + "actions-search-white" : { + "name" : "actions-search-white", + "rule" : ".actions-search-white", "hash" : "17f1bf9820b0c44f4641e0256840b138" }, - "action-icon-settings-dark" : { - "name" : "action-icon-settings-dark", - "rule" : ".action-icon-settings-dark", + "actions-settings-dark" : { + "name" : "actions-settings-dark", + "rule" : ".actions-settings-dark, .device-desktop .actions-settings-grey.phabricator-action-icon-item-link:hover", "hash" : "5ecb08643250a052e5d090ef4660faf5" }, - "action-icon-settings-grey" : { - "name" : "action-icon-settings-grey", - "rule" : ".action-icon-settings-grey, .device-desktop .phabricator-action-icon-view:hover .action-icon-settings", + "actions-settings-grey" : { + "name" : "actions-settings-grey", + "rule" : ".actions-settings-grey", "hash" : "5aeb35f1019c51a2f9140dc8765c9dca" }, - "action-icon-settings-white" : { - "name" : "action-icon-settings-white", - "rule" : ".action-icon-settings-white", + "actions-settings-white" : { + "name" : "actions-settings-white", + "rule" : ".actions-settings-white", "hash" : "8cdd154946f1a8d8d307b72eddd5d755" }, - "action-icon-star-dark" : { - "name" : "action-icon-star-dark", - "rule" : ".action-icon-star-dark", + "actions-star-dark" : { + "name" : "actions-star-dark", + "rule" : ".actions-star-dark, .device-desktop .actions-star-grey.phabricator-action-icon-item-link:hover", "hash" : "45567d03f8e34811eca0621e93b5e050" }, - "action-icon-star-grey" : { - "name" : "action-icon-star-grey", - "rule" : ".action-icon-star-grey, .device-desktop .phabricator-action-icon-view:hover .action-icon-star", + "actions-star-grey" : { + "name" : "actions-star-grey", + "rule" : ".actions-star-grey", "hash" : "1c7909e987b64b26b728506695457770" }, - "action-icon-star-white" : { - "name" : "action-icon-star-white", - "rule" : ".action-icon-star-white", + "actions-star-white" : { + "name" : "actions-star-white", + "rule" : ".actions-star-white", "hash" : "e7c949542a54a347879ceb96f42a3c02" }, - "action-icon-tag-dark" : { - "name" : "action-icon-tag-dark", - "rule" : ".action-icon-tag-dark", + "actions-tag-dark" : { + "name" : "actions-tag-dark", + "rule" : ".actions-tag-dark, .device-desktop .actions-tag-grey.phabricator-action-icon-item-link:hover", "hash" : "24d97fa7524d0bf1bac17d9e07a63f48" }, - "action-icon-tag-grey" : { - "name" : "action-icon-tag-grey", - "rule" : ".action-icon-tag-grey, .device-desktop .phabricator-action-icon-view:hover .action-icon-tag", + "actions-tag-grey" : { + "name" : "actions-tag-grey", + "rule" : ".actions-tag-grey", "hash" : "f04a5b38209c0f8e9ad2a3a964d5d505" }, - "action-icon-tag-white" : { - "name" : "action-icon-tag-white", - "rule" : ".action-icon-tag-white", + "actions-tag-white" : { + "name" : "actions-tag-white", + "rule" : ".actions-tag-white", "hash" : "fdfc5d20f6a0d90b6d329159823d2cb0" }, - "action-icon-wrench-dark" : { - "name" : "action-icon-wrench-dark", - "rule" : ".action-icon-wrench-dark", + "actions-wrench-dark" : { + "name" : "actions-wrench-dark", + "rule" : ".actions-wrench-dark, .device-desktop .actions-wrench-grey.phabricator-action-icon-item-link:hover", "hash" : "3a5cfa463c3c89194d3bbce3952a6e80" }, - "action-icon-wrench-grey" : { - "name" : "action-icon-wrench-grey", - "rule" : ".action-icon-wrench-grey, .device-desktop .phabricator-action-icon-view:hover .action-icon-wrench", + "actions-wrench-grey" : { + "name" : "actions-wrench-grey", + "rule" : ".actions-wrench-grey", "hash" : "40d8a77d6272589c69f65e9b5e5587e1" }, - "action-icon-wrench-white" : { - "name" : "action-icon-wrench-white", - "rule" : ".action-icon-wrench-white", + "actions-wrench-white" : { + "name" : "actions-wrench-white", + "rule" : ".actions-wrench-white", "hash" : "20ee83ae6a5d0dc6918727b6ccacec67" } }, @@ -141,6 +141,6 @@ 1, 2 ], - "header" : "\/**\n * @provides sprite-action-icon-css\n * @generated\n *\/\n\n.sprite-action-icon {\n background-image: url(\/rsrc\/image\/sprite-action-icon.png);\n background-repeat: no-repeat;\n}\n\n@media\nonly screen and (min-device-pixel-ratio: 1.5),\nonly screen and (-webkit-min-device-pixel-ratio: 1.5) {\n .sprite-action-icon {\n background-image: url(\/rsrc\/image\/sprite-action-icon-X2.png);\n background-size: {X}px {Y}px;\n }\n}\n", + "header" : "\/**\n * @provides sprite-actions-css\n * @generated\n *\/\n\n.sprite-actions {\n background-image: url(\/rsrc\/image\/sprite-actions.png);\n background-repeat: no-repeat;\n}\n\n@media\nonly screen and (min-device-pixel-ratio: 1.5),\nonly screen and (-webkit-min-device-pixel-ratio: 1.5) {\n .sprite-actions {\n background-image: url(\/rsrc\/image\/sprite-actions-X2.png);\n background-size: {X}px {Y}px;\n }\n}\n", "type" : "standard" } diff --git a/resources/sprite/manifest/minicons.json b/resources/sprite/manifest/minicons.json index 7abfc34c4c..2ffd2d5196 100644 --- a/resources/sprite/manifest/minicons.json +++ b/resources/sprite/manifest/minicons.json @@ -1,21 +1,41 @@ { "version" : 1, "sprites" : { + "minicons-company-dark" : { + "name" : "minicons-company-dark", + "rule" : ".minicons-company-dark", + "hash" : "7787a1c5ccdd0f94faa795db6b382901" + }, "minicons-company-white" : { "name" : "minicons-company-white", "rule" : ".minicons-company-white", "hash" : "181289eba2fcb851858ab5b99fd19818" }, + "minicons-move-dark" : { + "name" : "minicons-move-dark", + "rule" : ".minicons-move-dark", + "hash" : "d87f5f972885ad2653d92675b4e3855c" + }, "minicons-move-white" : { "name" : "minicons-move-white", "rule" : ".minicons-move-white", "hash" : "620e464c0e50830b90eaed3b5a2b9f56" }, + "minicons-public-dark" : { + "name" : "minicons-public-dark", + "rule" : ".minicons-public-dark", + "hash" : "12bdec3c0e273f820aaef70f61128f4b" + }, "minicons-public-white" : { "name" : "minicons-public-white", "rule" : ".minicons-public-white", "hash" : "c075363aeba4c52dbcc328a24d8f4298" }, + "minicons-restricted-dark" : { + "name" : "minicons-restricted-dark", + "rule" : ".minicons-restricted-dark", + "hash" : "7a1d926f7af98bef3b17a913e1d0b5b3" + }, "minicons-restricted-white" : { "name" : "minicons-restricted-white", "rule" : ".minicons-restricted-white", diff --git a/resources/sprite/minicons_dark_1x/company.png b/resources/sprite/minicons_dark_1x/company.png new file mode 100644 index 0000000000000000000000000000000000000000..eb8874c50d026311871353eb0dbdea7ed3abeed9 GIT binary patch literal 3893 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 TFemSw1u2a5cIg)CIGp|$T^P03 literal 0 HcmV?d00001 diff --git a/resources/sprite/minicons_dark_2x/move.png b/resources/sprite/minicons_dark_2x/move.png new file mode 100644 index 0000000000000000000000000000000000000000..0a0db37ce894493edee6e8a99afaf983de0ebd79 GIT binary patch literal 6990 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 T78SQ_9hG`o#+rq2n`{3B!Or-y literal 0 HcmV?d00001 diff --git a/resources/sprite/minicons_dark_2x/public.png b/resources/sprite/minicons_dark_2x/public.png new file mode 100644 index 0000000000000000000000000000000000000000..e6b26fc76afff1f2d17a09b3ab758a15cdb83fc2 GIT binary patch literal 6990 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 literal 0 HcmV?d00001 diff --git a/resources/sprite/minicons_dark_2x/restricted.png b/resources/sprite/minicons_dark_2x/restricted.png new file mode 100644 index 0000000000000000000000000000000000000000..d7d292d4b99ec3bcd40bf31415606c7310a0f0bb GIT binary patch literal 6990 zcmbst2|SeB_YSgel_kU@YqD=;XGZoVTZjt9C<*0ddqlETFG;dRT4a}ql6}dNtVI}0 zSrR>zrBRmof8X@R8^Y_~yT9Kz_w47~bI(2Z5`Mr?i;kL|8UR42qpe{A&D`)uNe%#l z%um-ILa5xdtlpil=6IJtVbo^^6{s2j#}r<>Wha_j#6WE}O$VWd~D z23%n_7NNaF-9<6XbN6b{y|7C!7T)>ZbM7p`zHeGCc%w3!HIta%LQz3UdsAE5ST=w* z9m%!zZBSiJ?Ym(ywLoesQFw)J^*T(h=9ac0aK7n25cLT*$;sOqQF-0{QFlRAaOp< z7Xhqq@Gv8iBLVkzhcFG`qzJNF4qn<1EF}Pwqh5_X=n@4IIu?%FAomHVXlA6z1C+Et z!Z<8=Hz4x`w)MQcUf^OJVA7nnQ2M+lhjCOG%2ZsQQW2m0{y=L=QFjUp3o$OCW*yc& zOmcQ4cJXRrRo-!IQh_oIZ)aWtkQ~Vjt#)R~tC>EhxmoUNA^lO&@p5w9E_?f-<&l<5 zH#Gp>dHA<2i-_m52Pl#UxGdl0pCofSLX-SE_OfFhgIWPd9_z7~af5TS|IW3d?(UJ{ z;V#`8q_y1(3%_M_)zJ!zrBh%1l@_scZ_5Vx0;LWIYLU&qt$I1DpR%*%I@Lw{-uDq& zi%)29i=3}^)#%t4Sqd`^8EMk-}jIP&`L=lt!st6g8)aJ>+S#?(clv^dy%hN zM+tyNa-eXoI>&6~4v`A-ot0a9D`^&O5XS6lbiJ>P#1yv_e@nHvrbj>LVvD#|nqkSS& zQO6n|?aHFftYyzVm_=F~K6k9;ktf-i<{0Lgwx&+BS98BVZ#pPs z^5Uc}+X&-`%m}$dtdzR>y?B$pv^!>7Wg`wDv+op|JTwkX+b;8aynIs-i;iAO_TA`L z>`tss*b@&wcs$$M7tLiD(`wP)IHvU><^$=hCoNqFb5LCvT8J%S2gMFFo9B*)vHB0# zUR`FZGn3dW`7w4hjv>y~+)}tu_z&jD7u384oi0Gic0b%p1)j(vO(> zGy|RHYNmSM-)bqG+^Sl?+6Z;uIQh}hp^{o| znqzGFULrisbeSQ)2g=q6JZkFx=I}3W#x?YJMt)LU1^JalbIWisuV-9?(?@i z45>ziQe$TPFZDA`?H=6C@jynuNYcT^Ipb!`P0LK}Oyf+gkEL=s6RC+0O7|CAEde)yw3g)gw0z_k+U6Zf&t=_Rl{m%gFrST4hpW|4DR$9zG4C!$7PTqe z>(KmDli|vVTALxhA(vX0+Is@z0z3kG2IB^k@g@dE4|YFL)K}E6YkJvqx2ZEuHbGhP zjnrtuXu_L>fhV?yybg&JrWHPQ(8(J<^uTJeu;g^`A$hA5OY=jA^EI;*v-vxVvx`%= zrWP4S8D=JRqN{U17d8~8KVi!q=_1GE6uK1p*`e)O(NCV|R8K~gM)^JS`*TT|f-bb1 zK9lnhr~lc(}OdM_5!r0O!Jyf{8ad*v$MAL*0k7aGN4RKyZEYWwO-hjl&X+z-F=X`f3>$WN%6NW(mwl$$&;8QOdMrOfT!NmkNl zTdV6)Z;eOVRB3KUOE?c?`5U2(0?`GdyyC~iBQ3JuQ|DB)S1;IE@WRAsm$has{iX+HV<|*wmGu-1by%U{|}w56n5|JE?4{03I>M; zTZE`ybqlj(ZzxUS5{ahL+qqd&)#P;&s1y09Iak< zSSDKPoYLDVFD9HLcluP>z~aPA=wRX?&5$o^ta$xlH}5;mRkOjVEa_s~L=4zEa zyYWe#Q8voe!)a|{1E1@EMV82V^F5bN5g94E zD42e&M4wK-FF_%RCH@?@i#j_KN07O zrf6`^zm~PdN|d?~`QU@uA)z#I~w! z@2(f7gy>m_a$3GG%{nQcr{wO9p&nx1vM1yqd6v@CONGKN9Y&cG7BM;gr2;+%&VffN zUtFjxKsbM-F{d60_WRiTX5z4srMT5Vf!()|L=F|^@Jl&N7}gl(^Ibx{ULzc#t}n{t zdT%^V&#Wmr-s0HqIQG6@G|8I&W=72W82Zz6-93-#1`a-+nESFHBOcQvgeeXxL>1jD zS9)6FklN7Pq^N3k-)z?Go0;5XdtZUwoB7jilN`P!Uu6F3z*v`HmsA?cFy;tzgAT_I zhXtL5e5`6tc*fZL%>|dk*@iCe6LqBRq)QaM^o4JVUUzV|E1Q`_bnf}6MPK(@*>d8P zrzo8qo%x@)Y6p4UG`xq$uv7zBE;@ytb60$`-ch{z?HnhXQ~V?{emY(=!8Crs+TQw^ z(My%K&hdVqMJ>#447X&Ith{w+%oYV0FEI^tmPgjNUpL>SkUDpaF_;2pkR)B^o3! ztgEZLLd8qy>FKQy@Di}p+}zweJVOIAvavOYud1!BjW>W-hOAYPl9J*zSFGW&?>~^W zi@^7v*aQRw#5p)PT4630iv{)d^$5Hq96bEN@e*J)HMJFZm2n*%9efDX)YO2mo>c-Q zBqS@0?}7a71W+Qd%Rgj_NCXd(5eWPC?ZZ(~QQ^^%kr9cWo}M;5LI_byON$VqDjXGo zz7oyXuU`qqDiMh9YlR6v>;*xppr8ORwPFEgz{KU{Wr7TTUL^pf3JWiqc&x%`XrR9W z)(%P%?9#s`W3AF!d?i@~hO)9Uj-H;LfUcUSr>8-6b@e}afVe*xfR*9mC@U*lC5S{K z*EPIq39_=XI2INbFh4&J#>dB3d57tgl$3aSV`Jlr@l~0Eh2Q}Ta&d8i+}vFJ2g5K8 z9t0UY0{#531Ofw|qobpr{*7xB(~03t4Rm#N;T4JNhgcbgSLI+W^QUk|vZ;mtY-Lp@ zf6DC|p&t?gwveiRt(@L^#KAEyFFTrlzKaK!ax(hv_h%m=43MazOB`sHiAO?1g|6_{6+b28bCy z3$JXWu&^+Wjg4)k=;1>_7;r5U4$A20DCq3$TsaUcyTHoIx?#~18-nGC$A(LQyD8Mo z-V(Yhu@W)7p#f;y;5G34JrnD!f;TiUGc$uf#Dsa377?Kik^rT_fx^-(O1qB5=e5T;t-Ksj{gv~B#&^P|8BkYO$H7lAc);(Sl9CcN2&{zh4Th?QhDHVC z7|;Il*;KI7Kjz#whoQWoa6a_%Mq(?3jcHfn_Bq~%yqW_y5R7s-?C-P zN=JZKwy>}O);<`CeZ#ludOGk{Ko{b=Td{5t!W9pH!~I;j|g(GqM_H6__!#GU;mGMh8(9+UE1|3B;*daW__^&vJb^h-F;6?-=Gktyi z1F!*jhVjiB6fC#V_@&6A@hy-^0%6<*K4f2Bc=a5##l6d@AdROlZR0O;&D)W|{FUicphjp7FY literal 0 HcmV?d00001 diff --git a/src/__celerity_resource_map__.php b/src/__celerity_resource_map__.php index a6fa00dd88..f031989511 100644 --- a/src/__celerity_resource_map__.php +++ b/src/__celerity_resource_map__.php @@ -625,15 +625,15 @@ celerity_register_resource_map(array( ), '/rsrc/image/sprite-minicons-X2.png' => array( - 'hash' => '9b36608d0bfaa941816e42ceb6912aaf', - 'uri' => '/res/9b36608d/rsrc/image/sprite-minicons-X2.png', + 'hash' => 'c420c6462f7e50ca9941ccc5dd9e3dec', + 'uri' => '/res/c420c646/rsrc/image/sprite-minicons-X2.png', 'disk' => '/rsrc/image/sprite-minicons-X2.png', 'type' => 'png', ), '/rsrc/image/sprite-minicons.png' => array( - 'hash' => 'f4aa63b2bb2d7364c388a20fa35a08c5', - 'uri' => '/res/f4aa63b2/rsrc/image/sprite-minicons.png', + 'hash' => '168bb875933624b3080a1cc134e5b4ed', + 'uri' => '/res/168bb875/rsrc/image/sprite-minicons.png', 'disk' => '/rsrc/image/sprite-minicons.png', 'type' => 'png', ), @@ -2821,6 +2821,24 @@ celerity_register_resource_map(array( ), 'disk' => '/rsrc/js/application/herald/PathTypeahead.js', ), + 'phabricator-action-header-view-css' => + array( + 'uri' => '/res/1c0142de/rsrc/css/layout/phabricator-action-header-view.css', + 'type' => 'css', + 'requires' => + array( + ), + 'disk' => '/rsrc/css/layout/phabricator-action-header-view.css', + ), + 'phabricator-action-icon-view-css' => + array( + 'uri' => '/res/8b47cf61/rsrc/css/layout/phabricator-action-icon-view.css', + 'type' => 'css', + 'requires' => + array( + ), + 'disk' => '/rsrc/css/layout/phabricator-action-icon-view.css', + ), 'phabricator-action-list-view-css' => array( 'uri' => '/res/7a67c3b9/rsrc/css/layout/phabricator-action-list-view.css', @@ -3475,7 +3493,7 @@ celerity_register_resource_map(array( ), 'phabricator-workboard-view-css' => array( - 'uri' => '/res/c9bfe320/rsrc/css/layout/phabricator-workboard-view.css', + 'uri' => '/res/14217087/rsrc/css/layout/phabricator-workboard-view.css', 'type' => 'css', 'requires' => array( @@ -3484,7 +3502,7 @@ celerity_register_resource_map(array( ), 'phabricator-workpanel-view-css' => array( - 'uri' => '/res/4e25e23b/rsrc/css/layout/phabricator-workpanel-view.css', + 'uri' => '/res/ff5d5b26/rsrc/css/layout/phabricator-workpanel-view.css', 'type' => 'css', 'requires' => array( @@ -3716,9 +3734,9 @@ celerity_register_resource_map(array( ), 'disk' => '/rsrc/css/core/spacing.css', ), - 'sprite-action-icon-css' => + 'sprite-actions-css' => array( - 'uri' => '/res/a992b71c/rsrc/css/sprite-actions.css', + 'uri' => '/res/41ef6a23/rsrc/css/sprite-actions.css', 'type' => 'css', 'requires' => array( @@ -3799,7 +3817,7 @@ celerity_register_resource_map(array( ), 'sprite-minicons-css' => array( - 'uri' => '/res/8b66d53f/rsrc/css/sprite-minicons.css', + 'uri' => '/res/2dba70cd/rsrc/css/sprite-minicons.css', 'type' => 'css', 'requires' => array( diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php index 641625a8ec..f86e8a36f6 100644 --- a/src/__phutil_library_map__.php +++ b/src/__phutil_library_map__.php @@ -666,6 +666,9 @@ phutil_register_library_map(array( 'PhabricatorAWSConfigOptions' => 'applications/config/option/PhabricatorAWSConfigOptions.php', 'PhabricatorAccessLog' => 'infrastructure/PhabricatorAccessLog.php', 'PhabricatorAccessLogConfigOptions' => 'applications/config/option/PhabricatorAccessLogConfigOptions.php', + 'PhabricatorActionHeaderExample' => 'applications/uiexample/examples/PhabricatorActionHeaderExample.php', + 'PhabricatorActionHeaderView' => 'view/layout/PhabricatorActionHeaderView.php', + 'PhabricatorActionIconView' => 'view/layout/PhabricatorActionIconView.php', 'PhabricatorActionListExample' => 'applications/uiexample/examples/PhabricatorActionListExample.php', 'PhabricatorActionListView' => 'view/layout/PhabricatorActionListView.php', 'PhabricatorActionView' => 'view/layout/PhabricatorActionView.php', @@ -1445,7 +1448,6 @@ phutil_register_library_map(array( 'PhabricatorUserStatusInvalidEpochException' => 'applications/people/exception/PhabricatorUserStatusInvalidEpochException.php', 'PhabricatorUserStatusOverlapException' => 'applications/people/exception/PhabricatorUserStatusOverlapException.php', 'PhabricatorUserTestCase' => 'applications/people/storage/__tests__/PhabricatorUserTestCase.php', - 'PhabricatorWorkboardActionView' => 'view/layout/PhabricatorWorkboardActionView.php', 'PhabricatorWorkboardExample' => 'applications/uiexample/examples/PhabricatorWorkboardExample.php', 'PhabricatorWorkboardView' => 'view/layout/PhabricatorWorkboardView.php', 'PhabricatorWorker' => 'infrastructure/daemon/workers/PhabricatorWorker.php', @@ -2345,6 +2347,9 @@ phutil_register_library_map(array( 'Phabricator404Controller' => 'PhabricatorController', 'PhabricatorAWSConfigOptions' => 'PhabricatorApplicationConfigOptions', 'PhabricatorAccessLogConfigOptions' => 'PhabricatorApplicationConfigOptions', + 'PhabricatorActionHeaderExample' => 'PhabricatorUIExample', + 'PhabricatorActionHeaderView' => 'AphrontView', + 'PhabricatorActionIconView' => 'AphrontView', 'PhabricatorActionListExample' => 'PhabricatorUIExample', 'PhabricatorActionListView' => 'AphrontView', 'PhabricatorActionView' => 'AphrontView', @@ -3104,7 +3109,6 @@ phutil_register_library_map(array( 'PhabricatorUserStatusInvalidEpochException' => 'Exception', 'PhabricatorUserStatusOverlapException' => 'Exception', 'PhabricatorUserTestCase' => 'PhabricatorTestCase', - 'PhabricatorWorkboardActionView' => 'AphrontView', 'PhabricatorWorkboardExample' => 'PhabricatorUIExample', 'PhabricatorWorkboardView' => 'AphrontView', 'PhabricatorWorkerActiveTask' => 'PhabricatorWorkerTask', diff --git a/src/applications/uiexample/examples/PhabricatorActionHeaderExample.php b/src/applications/uiexample/examples/PhabricatorActionHeaderExample.php new file mode 100644 index 0000000000..ee94cc4593 --- /dev/null +++ b/src/applications/uiexample/examples/PhabricatorActionHeaderExample.php @@ -0,0 +1,277 @@ +setHeader(pht('Header Plain')); + + $header1 = id(new PhabricatorActionHeaderView()) + ->setHeaderTitle('Colorless'); + + $header2 = id(new PhabricatorActionHeaderView()) + ->setHeaderTitle('Light Grey') + ->setHeaderColor(PhabricatorActionHeaderView::HEADER_GREY); + + $header3 = id(new PhabricatorActionHeaderView()) + ->setHeaderTitle('Blue') + ->setHeaderColor(PhabricatorActionHeaderView::HEADER_BLUE); + + $header4 = id(new PhabricatorActionHeaderView()) + ->setHeaderTitle('Green') + ->setHeaderColor(PhabricatorActionHeaderView::HEADER_GREEN); + + $header5 = id(new PhabricatorActionHeaderView()) + ->setHeaderTitle('Red') + ->setHeaderColor(PhabricatorActionHeaderView::HEADER_RED); + + $header6 = id(new PhabricatorActionHeaderView()) + ->setHeaderTitle('Yellow') + ->setHeaderColor(PhabricatorActionHeaderView::HEADER_YELLOW); + + $layout1 = id(new AphrontMultiColumnView()) + ->addColumn($header1) + ->addColumn($header2) + ->addColumn($header3) + ->addColumn($header4) + ->addColumn($header5) + ->addColumn($header6) + ->setFluidLayout(true) + ->setGutter(AphrontMultiColumnView::GUTTER_SMALL); + + $wrap1 = phutil_tag( + 'div', + array( + 'class' => 'ml' + ), + $layout1); + +/* Policy Icons */ + $title2 = id(new PhabricatorHeaderView()) + ->setHeader(pht('With Policy Icons')); + + $header1 = id(new PhabricatorActionHeaderView()) + ->setHeaderTitle('Company') + ->setHeaderIcon('company-dark'); + + $header2 = id(new PhabricatorActionHeaderView()) + ->setHeaderTitle('Public') + ->setHeaderColor(PhabricatorActionHeaderView::HEADER_GREY) + ->setHeaderIcon('public-dark'); + + $header3 = id(new PhabricatorActionHeaderView()) + ->setHeaderTitle('Restricted') + ->setHeaderColor(PhabricatorActionHeaderView::HEADER_BLUE) + ->setHeaderIcon('restricted-white'); + + $header4 = id(new PhabricatorActionHeaderView()) + ->setHeaderTitle('Company') + ->setHeaderColor(PhabricatorActionHeaderView::HEADER_GREEN) + ->setHeaderIcon('company-white'); + + $header5 = id(new PhabricatorActionHeaderView()) + ->setHeaderTitle('Public') + ->setHeaderColor(PhabricatorActionHeaderView::HEADER_RED) + ->setHeaderIcon('public-white'); + + $header6 = id(new PhabricatorActionHeaderView()) + ->setHeaderTitle('Restricted') + ->setHeaderColor(PhabricatorActionHeaderView::HEADER_YELLOW) + ->setHeaderIcon('restriced-white'); + + $layout2 = id(new AphrontMultiColumnView()) + ->addColumn($header1) + ->addColumn($header2) + ->addColumn($header3) + ->addColumn($header4) + ->addColumn($header5) + ->addColumn($header6) + ->setFluidLayout(true) + ->setGutter(AphrontMultiColumnView::GUTTER_SMALL); + + $wrap2 = phutil_tag( + 'div', + array( + 'class' => 'ml' + ), + $layout2); + + +/* Action Icons */ + $title3 = id(new PhabricatorHeaderView()) + ->setHeader(pht('With Action Icons')); + + $action1 = new PhabricatorActionIconView(); + $action1->setSpriteSheet(PhabricatorActionIconView::SPRITE_ACTIONS); + $action1->setSpriteIcon('settings-grey'); + $action1->setHref('#'); + + $action2 = new PhabricatorActionIconView(); + $action2->setSpriteSheet(PhabricatorActionIconView::SPRITE_ACTIONS); + $action2->setSpriteIcon('heart-white'); + $action2->setHref('#'); + + $action3 = new PhabricatorActionIconView(); + $action3->setSpriteSheet(PhabricatorActionIconView::SPRITE_ACTIONS); + $action3->setSpriteIcon('tag-white'); + $action3->setHref('#'); + + $action4 = new PhabricatorActionIconView(); + $action4->setSpriteSheet(PhabricatorActionIconView::SPRITE_ACTIONS); + $action4->setSpriteIcon('new-white'); + $action4->setHref('#'); + + $action5 = new PhabricatorActionIconView(); + $action5->setSpriteSheet(PhabricatorActionIconView::SPRITE_ACTIONS); + $action5->setSpriteIcon('search-white'); + $action5->setHref('#'); + + $action6 = new PhabricatorActionIconView(); + $action6->setSpriteSheet(PhabricatorActionIconView::SPRITE_ACTIONS); + $action6->setSpriteIcon('move-white'); + $action6->setHref('#'); + + $header1 = id(new PhabricatorActionHeaderView()) + ->setHeaderTitle('Company') + ->setHeaderHref('http://phacility.com/') + ->addAction($action1); + + $header2 = id(new PhabricatorActionHeaderView()) + ->setHeaderTitle('Public') + ->setHeaderHref('http://phacility.com/') + ->setHeaderColor(PhabricatorActionHeaderView::HEADER_GREY) + ->addAction($action1); + + $header3 = id(new PhabricatorActionHeaderView()) + ->setHeaderTitle('Restricted') + ->setHeaderHref('http://phacility.com/') + ->setHeaderColor(PhabricatorActionHeaderView::HEADER_BLUE) + ->addAction($action2); + + $header4 = id(new PhabricatorActionHeaderView()) + ->setHeaderTitle('Company') + ->setHeaderHref('http://phacility.com/') + ->setHeaderColor(PhabricatorActionHeaderView::HEADER_GREEN) + ->addAction($action3); + + $header5 = id(new PhabricatorActionHeaderView()) + ->setHeaderTitle('Public') + ->setHeaderHref('http://phacility.com/') + ->setHeaderColor(PhabricatorActionHeaderView::HEADER_RED) + ->addAction($action4) + ->addAction($action5); + + $header6 = id(new PhabricatorActionHeaderView()) + ->setHeaderTitle('Restricted') + ->setHeaderHref('http://phacility.com/') + ->setHeaderColor(PhabricatorActionHeaderView::HEADER_YELLOW) + ->addAction($action6); + + $layout3 = id(new AphrontMultiColumnView()) + ->addColumn($header1) + ->addColumn($header2) + ->addColumn($header3) + ->addColumn($header4) + ->addColumn($header5) + ->addColumn($header6) + ->setFluidLayout(true) + ->setGutter(AphrontMultiColumnView::GUTTER_SMALL); + + $wrap3 = phutil_tag( + 'div', + array( + 'class' => 'ml' + ), + $layout3); + +/* Action Icons */ + $title4 = id(new PhabricatorHeaderView()) + ->setHeader(pht('With Tags')); + + $tag1 = id(new PhabricatorTagView()) + ->setType(PhabricatorTagView::TYPE_STATE) + ->setBackgroundColor(PhabricatorTagView::COLOR_RED) + ->setName('Open'); + + $tag2 = id(new PhabricatorTagView()) + ->setType(PhabricatorTagView::TYPE_STATE) + ->setBackgroundColor(PhabricatorTagView::COLOR_BLUE) + ->setName('Closed'); + + $action1 = new PhabricatorActionIconView(); + $action1->setSpriteSheet(PhabricatorActionIconView::SPRITE_ACTIONS); + $action1->setSpriteIcon('flag-grey'); + $action1->setHref('#'); + + $header1 = id(new PhabricatorActionHeaderView()) + ->setHeaderTitle('Company') + ->setTag($tag2); + + $header2 = id(new PhabricatorActionHeaderView()) + ->setHeaderTitle('Public') + ->setHeaderColor(PhabricatorActionHeaderView::HEADER_GREY) + ->addAction($action1) + ->setTag($tag1); + + $header3 = id(new PhabricatorActionHeaderView()) + ->setHeaderTitle('Restricted') + ->setHeaderColor(PhabricatorActionHeaderView::HEADER_BLUE) + ->setTag($tag2); + + $header4 = id(new PhabricatorActionHeaderView()) + ->setHeaderTitle('Company') + ->setHeaderColor(PhabricatorActionHeaderView::HEADER_GREEN) + ->setTag($tag1); + + $header5 = id(new PhabricatorActionHeaderView()) + ->setHeaderTitle('Public') + ->setHeaderColor(PhabricatorActionHeaderView::HEADER_RED) + ->setTag($tag2); + + $header6 = id(new PhabricatorActionHeaderView()) + ->setHeaderTitle('Restricted') + ->setHeaderColor(PhabricatorActionHeaderView::HEADER_YELLOW) + ->setTag($tag1); + + $layout3 = id(new AphrontMultiColumnView()) + ->addColumn($header1) + ->addColumn($header2) + ->addColumn($header3) + ->addColumn($header4) + ->addColumn($header5) + ->addColumn($header6) + ->setFluidLayout(true) + ->setGutter(AphrontMultiColumnView::GUTTER_SMALL); + + $wrap4 = phutil_tag( + 'div', + array( + 'class' => 'ml' + ), + $layout3); + + return phutil_tag( + 'div', + array(), + array( + $title1, + $wrap1, + $title2, + $wrap2, + $title3, + $wrap3, + $title4, + $wrap4 + )); + } +} diff --git a/src/applications/uiexample/examples/PhabricatorWorkboardExample.php b/src/applications/uiexample/examples/PhabricatorWorkboardExample.php index cbd9aecffd..724bf3968c 100644 --- a/src/applications/uiexample/examples/PhabricatorWorkboardExample.php +++ b/src/applications/uiexample/examples/PhabricatorWorkboardExample.php @@ -131,21 +131,21 @@ final class PhabricatorWorkboardExample extends PhabricatorUIExample { ->addPanel($panel2) ->addPanel($panel3); - $action = new PhabricatorWorkboardActionView(); + $action = new PhabricatorActionIconView(); $action->setHref('/maniphest/task/create'); $action->setImage('/rsrc/image/actions/edit.png'); - $person1 = new PhabricatorWorkboardActionView(); + $person1 = new PhabricatorActionIconView(); $person1->setHref('http://en.wikipedia.org/wiki/George_Washington'); $person1->setImage( celerity_get_resource_uri('/rsrc/image/people/washington.png')); - $person2 = new PhabricatorWorkboardActionView(); + $person2 = new PhabricatorActionIconView(); $person2->setHref('http://en.wikipedia.org/wiki/Warren_G._Harding'); $person2->setImage( celerity_get_resource_uri('/rsrc/image/people/harding.png')); - $person3 = new PhabricatorWorkboardActionView(); + $person3 = new PhabricatorActionIconView(); $person3->setHref('http://en.wikipedia.org/wiki/William_Howard_Taft'); $person3->setImage( celerity_get_resource_uri('/rsrc/image/people/taft.png')); diff --git a/src/infrastructure/celerity/CeleritySpriteGenerator.php b/src/infrastructure/celerity/CeleritySpriteGenerator.php index 57ac64de7e..e5024aca3c 100644 --- a/src/infrastructure/celerity/CeleritySpriteGenerator.php +++ b/src/infrastructure/celerity/CeleritySpriteGenerator.php @@ -114,13 +114,13 @@ final class CeleritySpriteGenerator { } $sprite = id(clone $template) - ->setName('action-icon-'.$icon.$suffix); + ->setName('actions-'.$icon.$suffix); $tcss = array(); - $tcss[] = '.action-icon-'.$icon.$suffix; - if ($color == 'grey') { - $tcss[] = '.device-desktop .phabricator-action-icon-view:hover '. - '.action-icon-'.$icon; + $tcss[] = '.actions-'.$icon.$suffix; + if ($color == 'dark') { + $tcss[] = '.device-desktop '. + '.actions-'.$icon.'-grey.phabricator-action-icon-item-link:hover'; } $sprite->setTargetCSS(implode(', ', $tcss)); @@ -133,7 +133,7 @@ final class CeleritySpriteGenerator { } } - $sheet = $this->buildSheet('action-icon', true); + $sheet = $this->buildSheet('actions', true); $sheet->setScales($scales); foreach ($sprites as $sprite) { $sheet->addSprite($sprite); @@ -147,6 +147,7 @@ final class CeleritySpriteGenerator { $colors = array( 'white', + 'dark', ); $scales = array( diff --git a/src/view/layout/PhabricatorActionHeaderView.php b/src/view/layout/PhabricatorActionHeaderView.php new file mode 100644 index 0000000000..5b0a952f04 --- /dev/null +++ b/src/view/layout/PhabricatorActionHeaderView.php @@ -0,0 +1,130 @@ +actions[] = $action; + return $this; + } + + public function setTag(PhabricatorTagView $tag) { + $this->actions[] = $tag; + return $this; + } + + public function setHeaderTitle($header) { + $this->headerTitle = $header; + return $this; + } + + public function setHeaderHref($href) { + $this->headerHref = $href; + return $this; + } + + public function setHeaderIcon($minicon) { + $this->headerIcon = $minicon; + return $this; + } + + public function setIconColor($color) { + $this->iconColor = $color; + return $this; + } + + public function setHeaderColor($color) { + $this->headerColor = $color; + return $this; + } + + public function render() { + + require_celerity_resource('phabricator-action-header-view-css'); + + $classes = array(); + $classes[] = 'phabricator-action-header'; + + if ($this->headerColor) { + $classes[] = 'sprite-gradient'; + $classes[] = 'gradient-'.$this->headerColor.'-header'; + } + + $action_list = array(); + foreach ($this->actions as $action) { + $action_list[] = phutil_tag( + 'li', + array( + 'class' => 'phabricator-action-header-icon-item' + ), + $action); + } + + $header_icon = ''; + if ($this->headerIcon) { + require_celerity_resource('sprite-minicons-css'); + $header_icon = phutil_tag( + 'span', + array( + 'class' => 'sprite-minicons minicons-'.$this->headerIcon + ), + ''); + } + + $header_title = $this->headerTitle; + if ($this->headerHref) { + $header_title = phutil_tag( + 'a', + array( + 'class' => 'phabricator-action-header-link', + 'href' => $this->headerHref + ), + $this->headerTitle); + } + + $header = phutil_tag( + 'h3', + array( + 'class' => 'phabricator-action-header-title' + ), + array( + $header_icon, + $header_title)); + + $icons = ''; + if (!empty($action_list)) { + $classes[] = 'phabricator-action-header-icon-'.$this->iconColor; + $icons = phutil_tag( + 'ul', + array( + 'class' => 'phabricator-action-header-icon-list' + ), + $action_list); + } + + return phutil_tag( + 'div', + array( + 'class' => implode(' ', $classes) + ), + array( + $header, + $icons + )); + } +} diff --git a/src/view/layout/PhabricatorActionIconView.php b/src/view/layout/PhabricatorActionIconView.php new file mode 100644 index 0000000000..8338d327cb --- /dev/null +++ b/src/view/layout/PhabricatorActionIconView.php @@ -0,0 +1,72 @@ +href = $href; + return $this; + } + + public function setWorkflow($workflow) { + $this->workflow = $workflow; + return $this; + } + + public function setImage($image) { + $this->image = $image; + return $this; + } + + public function setSpriteIcon($sprite) { + $this->spriteIcon = $sprite; + return $this; + } + + public function setSpriteSheet($sheet) { + $this->spriteSheet = $sheet; + return $this; + } + + public function render() { + require_celerity_resource('phabricator-action-icon-view-css'); + + if ($this->spriteIcon) { + require_celerity_resource('sprite-actions-css'); + require_celerity_resource('sprite-minicons-css'); + $classes = array(); + $classes[] = 'phabricator-action-icon-item-link'; + $classes[] = 'sprite-'.$this->spriteSheet; + $classes[] = $this->spriteSheet.'-'.$this->spriteIcon; + + $action_icon = phutil_tag( + 'a', + array( + 'href' => $this->href, + 'class' => implode(' ', $classes), + 'sigil' => $this->workflow ? 'workflow' : null, + ), + ''); + } else { + $action_icon = phutil_tag( + 'a', + array( + 'href' => $this->href, + 'class' => 'phabricator-action-icon-item-link', + 'sigil' => $this->workflow ? 'workflow' : null, + 'style' => 'background-image: url('.$this->image.');' + ), + ''); + } + + return $action_icon; + } +} diff --git a/src/view/layout/PhabricatorWorkboardActionView.php b/src/view/layout/PhabricatorWorkboardActionView.php deleted file mode 100644 index c35e4d7c56..0000000000 --- a/src/view/layout/PhabricatorWorkboardActionView.php +++ /dev/null @@ -1,35 +0,0 @@ -href = $href; - return $this; - } - - public function setWorkflow($workflow) { - $this->workflow = $workflow; - return $this; - } - - public function setImage($image) { - $this->image = $image; - } - - public function render() { - - return phutil_tag( - 'a', - array( - 'href' => $this->href, - 'class' => 'phabricator-workboard-action-item-link', - 'sigil' => $this->workflow ? 'workflow' : null, - 'style' => 'background-image: url('.$this->image.');' - ), - ''); - } -} diff --git a/src/view/layout/PhabricatorWorkboardView.php b/src/view/layout/PhabricatorWorkboardView.php index b2d7e4f09e..4dd6fba252 100644 --- a/src/view/layout/PhabricatorWorkboardView.php +++ b/src/view/layout/PhabricatorWorkboardView.php @@ -16,7 +16,7 @@ final class PhabricatorWorkboardView extends AphrontView { return $this; } - public function addAction(PhabricatorWorkboardActionView $action) { + public function addAction(PhabricatorActionIconView $action) { $this->actions[] = $action; return $this; } diff --git a/src/view/layout/PhabricatorWorkpanelView.php b/src/view/layout/PhabricatorWorkpanelView.php index 20aaa4439d..3270817d86 100644 --- a/src/view/layout/PhabricatorWorkpanelView.php +++ b/src/view/layout/PhabricatorWorkpanelView.php @@ -41,12 +41,9 @@ final class PhabricatorWorkpanelView extends AphrontView { $footer_tag); } - $header = phutil_tag( - 'div', - array( - 'class' => 'phabricator-workpanel-header' - ), - $this->header); + $header = id(new PhabricatorActionHeaderView()) + ->setHeaderTitle($this->header) + ->setHeaderColor(PhabricatorActionHeaderView::HEADER_GREY); $body = phutil_tag( 'div', diff --git a/webroot/rsrc/css/layout/phabricator-action-header-view.css b/webroot/rsrc/css/layout/phabricator-action-header-view.css new file mode 100644 index 0000000000..2cb9a4ab7b --- /dev/null +++ b/webroot/rsrc/css/layout/phabricator-action-header-view.css @@ -0,0 +1,58 @@ +/** + * @provides phabricator-action-header-view-css + */ + +.phabricator-action-header { + padding: 0 5px 0 8px; + overflow: hidden; +} + +.phabricator-action-header-title { + color: #333; + float: left; + font-size: 14px; + font-weight: bold; + line-height: 15px; + padding: 8px 0; + text-shadow: 0 1px 1px #fff; + white-space: nowrap; +} + +.phabricator-action-header-icon-list { + float: right; + padding-top: 4px; +} + +.phabricator-action-header-icon-item { + float: right; + padding-left: 2px; +} + +.phabricator-action-header-icon-item .phabricator-tag-view { + margin: 4px 2px 0; +} + +.phabricator-action-header-link { + color: #333; +} + +.gradient-green-header .phabricator-action-header-title, +.gradient-red-header .phabricator-action-header-title, +.gradient-blue-header .phabricator-action-header-title, +.gradient-yellow-header .phabricator-action-header-title, +.gradient-green-header .phabricator-action-header-link, +.gradient-red-header .phabricator-action-header-link, +.gradient-blue-header .phabricator-action-header-link, +.gradient-yellow-header .phabricator-action-header-link { + color: #fff; + text-shadow: 0 -1px 1px rgba(0,0,0,.5); +} + +.phabricator-action-header-title span { + float: left; + height: 16px; + width: 16px; + margin-right: 4px; +} + + diff --git a/webroot/rsrc/css/layout/phabricator-action-icon-view.css b/webroot/rsrc/css/layout/phabricator-action-icon-view.css new file mode 100644 index 0000000000..bb503d99c9 --- /dev/null +++ b/webroot/rsrc/css/layout/phabricator-action-icon-view.css @@ -0,0 +1,15 @@ +/** + * @provides phabricator-action-icon-view-css + */ + +.phabricator-action-icon-item-link.sprite-minicons { + display: block; + height: 16px; + width: 16px; +} + +.phabricator-action-icon-item-link.sprite-actions { + display: block; + height: 24px; + width: 24px; +} diff --git a/webroot/rsrc/css/layout/phabricator-workboard-view.css b/webroot/rsrc/css/layout/phabricator-workboard-view.css index f8e89d0f7d..2aa7d11b45 100644 --- a/webroot/rsrc/css/layout/phabricator-workboard-view.css +++ b/webroot/rsrc/css/layout/phabricator-workboard-view.css @@ -48,14 +48,14 @@ margin: 0px; } -.phabricator-workboard-action-item-link { +.phabricator-workboard-view .phabricator-action-icon-item-link { display: block; width: 50px; height: 50px; margin: 5px 4px 5px 5px; } -.device-phone .phabricator-workboard-action-item-link { +.device-phone .phabricator-workboard-view .phabricator-action-icon-item-link { margin-right: 0; } diff --git a/webroot/rsrc/css/layout/phabricator-workpanel-view.css b/webroot/rsrc/css/layout/phabricator-workpanel-view.css index aaebbae2f5..4df3173bfc 100644 --- a/webroot/rsrc/css/layout/phabricator-workpanel-view.css +++ b/webroot/rsrc/css/layout/phabricator-workpanel-view.css @@ -2,16 +2,10 @@ * @provides phabricator-workpanel-view-css */ -.phabricator-workpanel-view .phabricator-workpanel-header { - font-size: 14px; - font-weight: bold; - color: #333; +.phabricator-workpanel-view .phabricator-action-header { border: 1px solid #b3b5b6; border-top-left-radius: 5px; border-top-right-radius: 5px; - padding: 8px 10px; - background: #f0f0f0 url(/rsrc/image/texture/panel-header-gradient.png) repeat-x; - text-shadow: 0 1px 1px #fff; } .phabricator-workpanel-view .phabricator-workpanel-header-action { diff --git a/webroot/rsrc/css/sprite-actions.css b/webroot/rsrc/css/sprite-actions.css index 04609665c6..8663bdb25d 100644 --- a/webroot/rsrc/css/sprite-actions.css +++ b/webroot/rsrc/css/sprite-actions.css @@ -1,127 +1,127 @@ /** - * @provides sprite-action-icon-css + * @provides sprite-actions-css * @generated */ -.sprite-action-icon { - background-image: url(/rsrc/image/sprite-action-icon.png); +.sprite-actions { + background-image: url(/rsrc/image/sprite-actions.png); background-repeat: no-repeat; } @media only screen and (min-device-pixel-ratio: 1.5), only screen and (-webkit-min-device-pixel-ratio: 1.5) { - .sprite-action-icon { - background-image: url(/rsrc/image/sprite-action-icon-X2.png); + .sprite-actions { + background-image: url(/rsrc/image/sprite-actions-X2.png); background-size: 125px 150px; } } -.action-icon-flag-dark { +.actions-flag-dark, .device-desktop .actions-flag-grey.phabricator-action-icon-item-link:hover { background-position: 0px 0px; } -.action-icon-heart-dark { +.actions-heart-dark, .device-desktop .actions-heart-grey.phabricator-action-icon-item-link:hover { background-position: -25px 0px; } -.action-icon-move-dark { +.actions-move-dark, .device-desktop .actions-move-grey.phabricator-action-icon-item-link:hover { background-position: -50px 0px; } -.action-icon-new-dark { +.actions-new-dark, .device-desktop .actions-new-grey.phabricator-action-icon-item-link:hover { background-position: -75px 0px; } -.action-icon-search-dark { +.actions-search-dark, .device-desktop .actions-search-grey.phabricator-action-icon-item-link:hover { background-position: -100px 0px; } -.action-icon-settings-dark { +.actions-settings-dark, .device-desktop .actions-settings-grey.phabricator-action-icon-item-link:hover { background-position: 0px -25px; } -.action-icon-star-dark { +.actions-star-dark, .device-desktop .actions-star-grey.phabricator-action-icon-item-link:hover { background-position: -25px -25px; } -.action-icon-tag-dark { +.actions-tag-dark, .device-desktop .actions-tag-grey.phabricator-action-icon-item-link:hover { background-position: -50px -25px; } -.action-icon-wrench-dark { +.actions-wrench-dark, .device-desktop .actions-wrench-grey.phabricator-action-icon-item-link:hover { background-position: -75px -25px; } -.action-icon-flag-grey, .device-desktop .phabricator-action-icon-view:hover .action-icon-flag { +.actions-flag-grey { background-position: -100px -25px; } -.action-icon-heart-grey, .device-desktop .phabricator-action-icon-view:hover .action-icon-heart { +.actions-heart-grey { background-position: 0px -50px; } -.action-icon-move-grey, .device-desktop .phabricator-action-icon-view:hover .action-icon-move { +.actions-move-grey { background-position: -25px -50px; } -.action-icon-new-grey, .device-desktop .phabricator-action-icon-view:hover .action-icon-new { +.actions-new-grey { background-position: -50px -50px; } -.action-icon-search-grey, .device-desktop .phabricator-action-icon-view:hover .action-icon-search { +.actions-search-grey { background-position: -75px -50px; } -.action-icon-settings-grey, .device-desktop .phabricator-action-icon-view:hover .action-icon-settings { +.actions-settings-grey { background-position: -100px -50px; } -.action-icon-star-grey, .device-desktop .phabricator-action-icon-view:hover .action-icon-star { +.actions-star-grey { background-position: 0px -75px; } -.action-icon-tag-grey, .device-desktop .phabricator-action-icon-view:hover .action-icon-tag { +.actions-tag-grey { background-position: -25px -75px; } -.action-icon-wrench-grey, .device-desktop .phabricator-action-icon-view:hover .action-icon-wrench { +.actions-wrench-grey { background-position: -50px -75px; } -.action-icon-flag-white { +.actions-flag-white { background-position: -75px -75px; } -.action-icon-heart-white { +.actions-heart-white { background-position: -100px -75px; } -.action-icon-move-white { +.actions-move-white { background-position: 0px -100px; } -.action-icon-new-white { +.actions-new-white { background-position: -25px -100px; } -.action-icon-search-white { +.actions-search-white { background-position: -50px -100px; } -.action-icon-settings-white { +.actions-settings-white { background-position: -75px -100px; } -.action-icon-star-white { +.actions-star-white { background-position: -100px -100px; } -.action-icon-tag-white { +.actions-tag-white { background-position: 0px -125px; } -.action-icon-wrench-white { +.actions-wrench-white { background-position: -25px -125px; } diff --git a/webroot/rsrc/css/sprite-minicons.css b/webroot/rsrc/css/sprite-minicons.css index d5fe5931f9..258490f768 100644 --- a/webroot/rsrc/css/sprite-minicons.css +++ b/webroot/rsrc/css/sprite-minicons.css @@ -13,7 +13,7 @@ only screen and (min-device-pixel-ratio: 1.5), only screen and (-webkit-min-device-pixel-ratio: 1.5) { .sprite-minicons { background-image: url(/rsrc/image/sprite-minicons-X2.png); - background-size: 34px 34px; + background-size: 51px 51px; } } @@ -27,9 +27,25 @@ only screen and (-webkit-min-device-pixel-ratio: 1.5) { } .minicons-public-white { - background-position: 0px -17px; + background-position: -34px 0px; } .minicons-restricted-white { + background-position: 0px -17px; +} + +.minicons-company-dark { background-position: -17px -17px; } + +.minicons-move-dark { + background-position: -34px -17px; +} + +.minicons-public-dark { + background-position: 0px -34px; +} + +.minicons-restricted-dark { + background-position: -17px -34px; +} diff --git a/webroot/rsrc/image/sprite-minicons-X2.png b/webroot/rsrc/image/sprite-minicons-X2.png index f598ddb910625bbff7ed51c27aedc09ccedcc8ea..de5274a363ec5c041b08a960ec8db54b2ffcfa40 100644 GIT binary patch literal 2830 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 literal 1937 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 literal 965 zcmeAS@N?(olHy`uVBq!ia0vp^N+8U^3=*07`vU_5V|;*5h%1nb6%-a0Ld2IXTLxqV z1%ZqJg3FgLLm0@Uv9WP%Z0xaP$AE%OO-Jel`DbDfG&UV;K9X<7iZ6&J#E^wsZ*yueE9I_ z(WAR}@7}p{=ZhCFcI?=(dGqGu$B%#g`gQf{)z6KT7cxMSFe8m{taY5d-m+xw{JjMpuL|ze+F9p_U+rhfB!;s0k!}C z|G(?+?Jq#LmXrkf1v4n zM~@yqd-dw|o44;jeEj(F)924$zJC4wWe?XU;eVznp~k+xQ$KHQ;@qvxqOI3>=Ge9ZcMXqE z*@w&KY6PM_(MwOIRs!KSVHWt+V}>8X@`-?H7Tnxo%PY0ne3^O2teqU9Du z+ul9JV6$b#p4AsQFGx!;Z75y7c3Q)Csh!(uf3YeoG<59e*|hQd=AHa*C5NbYSTkhdQ5mk{exp-lpX5oOH29(3JB-)gH|$OI~%K zNdEIX`F2)Ro8e9Ii2<|3UoX7i8TIBO`@~b{B0t&`R|cwi-EDsHPU3gpyZ8OS_8sfE g7xUZRs;58r0TT;@r>mdKI;Vst085n4#sB~S