From 93eda9d9c1deb50cfa36392dbcbc4dc56883160f Mon Sep 17 00:00:00 2001 From: Fabio Comuni Date: Fri, 22 Jul 2011 17:37:51 +0200 Subject: Initial work on new UI --- images/icons/gear_22.png | Bin 0 -> 886 bytes images/icons/notify_off_22.png | Bin 0 -> 884 bytes images/icons/notify_on_22.png | Bin 0 -> 561 bytes include/template_processor.php | 3 + view/nav.tpl | 70 ++++- view/theme/quattro/LIBERATION-FONTS-COPYING | 339 +++++++++++++++++++++ view/theme/quattro/LiberationSans-Bold.ttf | Bin 0 -> 136664 bytes view/theme/quattro/LiberationSans-Italic.ttf | Bin 0 -> 161532 bytes view/theme/quattro/LiberationSans-Regular.ttf | Bin 0 -> 139036 bytes .../quattro/liberation-fonts-ttf-1.07.0.tar.gz | Bin 0 -> 1326750 bytes view/theme/quattro/style.css | 168 ++++++++++ view/theme/quattro/style.less | 193 ++++++++++++ 12 files changed, 761 insertions(+), 12 deletions(-) create mode 100644 images/icons/gear_22.png create mode 100644 images/icons/notify_off_22.png create mode 100644 images/icons/notify_on_22.png create mode 100644 view/theme/quattro/LIBERATION-FONTS-COPYING create mode 100644 view/theme/quattro/LiberationSans-Bold.ttf create mode 100644 view/theme/quattro/LiberationSans-Italic.ttf create mode 100644 view/theme/quattro/LiberationSans-Regular.ttf create mode 100644 view/theme/quattro/liberation-fonts-ttf-1.07.0.tar.gz create mode 100644 view/theme/quattro/style.css create mode 100644 view/theme/quattro/style.less diff --git a/images/icons/gear_22.png b/images/icons/gear_22.png new file mode 100644 index 000000000..e363de00d Binary files /dev/null and b/images/icons/gear_22.png differ diff --git a/images/icons/notify_off_22.png b/images/icons/notify_off_22.png new file mode 100644 index 000000000..0520af327 Binary files /dev/null and b/images/icons/notify_off_22.png differ diff --git a/images/icons/notify_on_22.png b/images/icons/notify_on_22.png new file mode 100644 index 000000000..a8b305245 Binary files /dev/null and b/images/icons/notify_on_22.png differ diff --git a/include/template_processor.php b/include/template_processor.php index 83f680f02..f1d2eae4e 100644 --- a/include/template_processor.php +++ b/include/template_processor.php @@ -166,6 +166,9 @@ $s = preg_replace_callback('/\|\|([0-9]+)\|\|/', array($this, "_replcb_node"), $s); if ($s==Null) $this->_preg_error(); + // remove comments block + $s = preg_replace('/{#[^#]*#}/', "" , $s); + // replace strings recursively (limit to 10 loops) $os = ""; $count=0; while($os!=$s && $count<10){ diff --git a/view/nav.tpl b/view/nav.tpl index 09a25ac83..3a458b193 100644 --- a/view/nav.tpl +++ b/view/nav.tpl @@ -1,7 +1,63 @@ -$langselector +{# $langselector #}
$sitelocation
+ + + + +{# + {{ if $nav.logout }}$nav.logout.1 {{ endif }} {{ if $nav.login }}$nav.login.1 {{ endif }} @@ -18,17 +74,6 @@ $langselector {{ if $nav.admin }}$nav.admin.1{{ endif }} -{{ if $nav.network }} -$nav.network.1 - -{{ endif }} -{{ if $nav.home }} -$nav.home.1 - -{{ endif }} -{{ if $nav.community }} -$nav.community.1 -{{ endif }} {{ if $nav.notifications }} $nav.notifications.1 @@ -47,3 +92,4 @@ $langselector +#} diff --git a/view/theme/quattro/LIBERATION-FONTS-COPYING b/view/theme/quattro/LIBERATION-FONTS-COPYING new file mode 100644 index 000000000..d511905c1 --- /dev/null +++ b/view/theme/quattro/LIBERATION-FONTS-COPYING @@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/view/theme/quattro/LiberationSans-Bold.ttf b/view/theme/quattro/LiberationSans-Bold.ttf new file mode 100644 index 000000000..169fac34d Binary files /dev/null and b/view/theme/quattro/LiberationSans-Bold.ttf differ diff --git a/view/theme/quattro/LiberationSans-Italic.ttf b/view/theme/quattro/LiberationSans-Italic.ttf new file mode 100644 index 000000000..8b9dc760a Binary files /dev/null and b/view/theme/quattro/LiberationSans-Italic.ttf differ diff --git a/view/theme/quattro/LiberationSans-Regular.ttf b/view/theme/quattro/LiberationSans-Regular.ttf new file mode 100644 index 000000000..ceeaa2740 Binary files /dev/null and b/view/theme/quattro/LiberationSans-Regular.ttf differ diff --git a/view/theme/quattro/liberation-fonts-ttf-1.07.0.tar.gz b/view/theme/quattro/liberation-fonts-ttf-1.07.0.tar.gz new file mode 100644 index 000000000..0c86f7347 Binary files /dev/null and b/view/theme/quattro/liberation-fonts-ttf-1.07.0.tar.gz differ diff --git a/view/theme/quattro/style.css b/view/theme/quattro/style.css new file mode 100644 index 000000000..055f8e9b6 --- /dev/null +++ b/view/theme/quattro/style.css @@ -0,0 +1,168 @@ +/** + * Fabio Comuni + **/ +/* fonts */ +@font-face { + font-family: "LiberationSans"; + src: local("Liberation Sans"), url(LiberationSans-Regular.ttf) format("truetype"); + font-weight: normal; + font-style: normal; +} +@font-face { + font-family: "LiberationSans"; + src: local("Liberation Sans"), url(LiberationSans-Bold.ttf) format("truetype"); + font-weight: bold; + font-style: normal; +} +@font-face { + font-family: "LiberationSans"; + src: local("Liberation Sans"), url(LiberationSans-Italic.ttf) format("truetype"); + font-weight: normal; + font-style: italic; +} +/* global */ +body { + font-family: LiberationSans, helvetica, arial, freesans, clean, sans-serif; + font-size: 12px; + background-color: #FFFFFF; + color: #2d2d2d; + margin: 0px; +} +a, a:visited, a:link { + color: #005c94; + text-decoration: none; +} +a:hover { + text-decoration: underline; +} +.left { + float: left; +} +.right { + float: right; +} +/* nav */ +nav { + width: 100%; + height: 50px; + background-color: #0e232e; + color: #FFFFFF; +} +nav a, +nav a:visited, +nav a:link, +nav a:hover { + color: #FFFFFF; + text-decoration: none; +} +nav #site-location { + font-size: 8px; + float: left; + background-color: #364e59; + padding: 1px 5px; + margin-left: 20px; + -moz-border-radius: 0 0 5px 5px; + -webkit-border-radius: 0 0 5px 5px; + border-radius: 0 0 5px 5px; +} +nav #nav { + clear: both; + padding: 0px 20px; + height: auto; + padding-top: 6px; +} +nav #nav .nav-menu-icon { + position: relative; + height: 22px; + padding: 5px; + margin: 0px 10px; + -moz-border-radius: 5px 5px 0 0; + -webkit-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; +} +nav #nav .nav-menu-icon.selected { + background-color: #364e59; +} +nav #nav .nav-menu-icon img { + width: 22px; + height: 22px; +} +nav #nav .nav-menu { + position: relative; + height: 16px; + padding: 5px; + margin: 3px 15px 0px; + font-size: 14px; + border-bottom: 3px solid #0e232e; +} +nav #nav .nav-menu.selected { + border-bottom: 3px solid #9eabb0; +} +nav #nav .nav-menu .nav-notify { + position: absolute; + background-color: #19aeff; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; + font-size: 10px; + padding: 1px 3px; + top: 0px; + right: -10px; + min-width: 15px; + text-align: right; +} +ul.menu-popup { + position: absolute; + /*display: none;*/ + + width: auto; + background: #FFFFFF; + color: #2d2d2d; + margin: 0px; + padding: 0px; + list-style: none; + border: 3px solid #364e59; + z-index: 100000; +} +ul.menu-popup a { + display: block; + color: #2d2d2d; + padding: 5px 10px; +} +ul.menu-popup a:hover { + background-color: #bdcdd4; +} +ul.menu-popup .menu-sep { + border-top: 1px solid #9eabb0; +} +.left .menu-popup { + left: 0px; +} +.right .menu-popup { + right: 0px; +} +/* icons */ +.icon { + background-color: transparent ; + background-repeat: no-repeat; + background-position: center center; + display: block; +} +.icon.s22 { + width: 22px; + height: 22px; +} +.icon.s22.notify_off { + background-image: url("../../../images/icons/notify_off_22.png"); +} +.icon.s22.notify_on { + background-image: url("../../../images/icons/notify_on_22.png"); +} +/* aside */ +aside { + display: none; +} +/* section */ +section { + display: none; +} diff --git a/view/theme/quattro/style.less b/view/theme/quattro/style.less new file mode 100644 index 000000000..e267834a6 --- /dev/null +++ b/view/theme/quattro/style.less @@ -0,0 +1,193 @@ +/** + * Fabio Comuni + **/ +// Less file http://lesscss.org/ +// compile with lessc +// $ lessc style.less > style.css + +// "Echo" palette from Inkscape +@Blue1:rgb(25,174,255); +@Blue2:rgb(0,132,200); +@Blue3:rgb(0,92,148); +@Red1:rgb(255,65,65); +@Red2:rgb(220,0,0); +@Red3:rgb(181,0,0); +@Orange1:rgb(255,255,62); +@Orange2:rgb(255,153,0); +@Orange3:rgb(255,102,0); +@Brown1:rgb(255,192,34); +@Brown2:rgb(184,129,0); +@Brown3:rgb(128,77,0); +@Green1:rgb(204,255,66); +@Green2:rgb(154,222,0); +@Green3:rgb(0,145,0); +@Purple1:rgb(241,202,255); +@Purple2:rgb(215,108,255); +@Purple3:rgb(186,0,255); +@Metalic1:rgb(189,205,212); +@Metalic2:rgb(158,171,176); +@Metalic3:rgb(54,78,89); +@Metalic4:rgb(14,35,46); +@Grey1:rgb(255,255,255); +@Grey2:rgb(204,204,204); +@Grey3:rgb(153,153,153); +@Grey4:rgb(102,102,102); +@Grey5:rgb(45,45,45); + + + +/* fonts */ +@font-face { + font-family: "LiberationSans"; + src: local("Liberation Sans"), url( LiberationSans-Regular.ttf ) format("truetype"); + font-weight: normal; font-style: normal; +} +@font-face { + font-family: "LiberationSans"; + src: local("Liberation Sans"), url( LiberationSans-Bold.ttf ) format("truetype"); + font-weight: bold; font-style: normal; +} +@font-face { + font-family: "LiberationSans"; + src: local("Liberation Sans"), url( LiberationSans-Italic.ttf ) format("truetype"); + font-weight: normal; font-style: italic; +} + +/* global */ +body { + font-family: LiberationSans,helvetica,arial,freesans,clean,sans-serif; + font-size: 12px; + background-color: #FFFFFF; + color: @Grey5; + margin: 0px; +} + +.rounded(@tr: 5px, @tl: 5px, @bl: 5px, @br: 5px){ + -moz-border-radius: @arguments; + -webkit-border-radius: @arguments; + border-radius: @arguments; +} + +.roundbottom (@radius: 5px){ .rounded(0, 0, @radius, @radius); } +.roundtop (@radius: 5px){ .rounded(@radius, @radius, 0, 0); } + +a, a:visited, a:link { color: @Blue3; text-decoration: none; } +a:hover {text-decoration: underline; } + +.left { float: left; } +.right { float: right; } + +/* nav */ +nav { + width: 100%; height: 50px; + background-color: @Metalic4; + color: #FFFFFF; + a, a:visited, a:link, a:hover { color: #FFFFFF; text-decoration: none; } + + #site-location { + font-size:8px; + float:left; + background-color: @Metalic3; + padding: 1px 5px; + margin-left: 20px; + .roundbottom() + } + + #nav { + clear: both; + padding: 0px 20px; + height: auto; + padding-top: 6px; + + .nav-menu-icon { + position: relative; + height: 22px; + padding: 5px; + margin: 0px 10px; + .roundtop(); + + &.selected { + background-color: @Metalic3; + } + + img { width: 22px; height: 22px; } + } + + .nav-menu { + position: relative; + height: 16px; + padding: 5px; + margin: 3px 15px 0px; + font-size: 14px; + border-bottom: 3px solid @Metalic4; + &.selected { + border-bottom: 3px solid @Metalic2; + } + + .nav-notify { + position: absolute; + background-color: @Blue1; + .rounded(); + font-size: 10px; + padding: 1px 3px; + top: 0px; + right: -10px; + min-width: 15px; + text-align: right; + } + + } + + } +} + +ul.menu-popup { + position: absolute; + /*display: none;*/ + width: auto; + background: #FFFFFF; + color: @Grey5; + margin: 0px; + padding: 0px; + list-style: none; + border: 3px solid @Metalic3; + a { display: block; color: @Grey5; padding: 5px 10px;} + a:hover { background-color: @Metalic1; } + z-index: 100000; + + .menu-sep { + border-top: 1px solid @Metalic2; + } +} +.left .menu-popup{ left: 0px; } +.right .menu-popup{ right: 0px; } + +/* icons */ + + +.icons(@size: 22) { + &.notify_off { background-image: url("../../../images/icons/notify_off_@{size}.png"); } + &.notify_on { background-image: url("../../../images/icons/notify_on_@{size}.png"); } +} + + +.icon { + background-color: transparent ; + background-repeat: no-repeat; + background-position: center center; + display: block; + + &.s22 { + width:22px; height: 22px; + .icons(22); + } + +} + + + +/* aside */ +aside { display: none; } + +/* section */ +section { display: none;} -- cgit v1.2.3 From e6444adafdd3c50913ca44d8701996e058e064b9 Mon Sep 17 00:00:00 2001 From: Fabio Comuni Date: Mon, 25 Jul 2011 16:52:30 +0200 Subject: change nav selected css class --- boot.php | 7 ++++++- include/nav.php | 2 +- mod/community.php | 2 +- mod/contacts.php | 2 +- mod/directory.php | 2 +- mod/message.php | 2 +- mod/network.php | 2 +- mod/notifications.php | 2 +- mod/profile.php | 2 +- mod/profiles.php | 2 +- mod/settings.php | 2 +- 11 files changed, 16 insertions(+), 11 deletions(-) diff --git a/boot.php b/boot.php index d36512295..f4b43e4c9 100644 --- a/boot.php +++ b/boot.php @@ -2946,6 +2946,11 @@ function get_plugin_info($plugin){ return $info; }} +if(! function_exists('set_nav_selected')){ +function set_nav_selected($id){ + return ''; +}} + if(! function_exists('return_bytes')) { function return_bytes ($size_str) { switch (substr ($size_str, -1)) @@ -2968,4 +2973,4 @@ function generate_guid() { $found = false; } while ($found == true ); return $guid; -} \ No newline at end of file +} diff --git a/include/nav.php b/include/nav.php index 895c321e6..caed9453a 100644 --- a/include/nav.php +++ b/include/nav.php @@ -41,7 +41,7 @@ function nav(&$a) { $nav['logout'] = Array('logout',t('Logout'), "", t('End this session')); } else { - $nav['login'] = Array('login',t('Login'), ($a->module == 'login'?'nav-selected':''), t('Sign in')); + $nav['login'] = Array('login',t('Login'), ($a->module == 'login'?'selected':''), t('Sign in')); } diff --git a/mod/community.php b/mod/community.php index cf43598b5..f8bd88d86 100644 --- a/mod/community.php +++ b/mod/community.php @@ -25,7 +25,7 @@ function community_content(&$a, $update = 0) { $o .= '

' . t('Community') . '

'; if(! $update) { - $o .= ''; + $o .= set_nav_selected('nav-community-link'); $o .= '
' . "\r\n"; $o .= "\r\n"; } diff --git a/mod/contacts.php b/mod/contacts.php index 2fc01a0d8..1fa07688c 100644 --- a/mod/contacts.php +++ b/mod/contacts.php @@ -112,7 +112,7 @@ function contacts_content(&$a) { $sort_type = 0; $o = ''; - $o .= ''; + $o .= set_nav_selected('nav-contacts-link'); $_SESSION['return_url'] = $a->get_baseurl() . '/' . $a->cmd; diff --git a/mod/directory.php b/mod/directory.php index 0c60f04bf..03b6ab4d1 100644 --- a/mod/directory.php +++ b/mod/directory.php @@ -22,7 +22,7 @@ function directory_content(&$a) { } $o = ''; - $o .= ''; + $o .= set_nav_selected('nav-directory-link'); if(x($_SESSION,'theme')) unset($_SESSION['theme']); diff --git a/mod/message.php b/mod/message.php index ad598eb7d..ff3db06e2 100644 --- a/mod/message.php +++ b/mod/message.php @@ -110,7 +110,7 @@ function message_post(&$a) { function message_content(&$a) { $o = ''; - $o .= ''; + $o .= set_nav_selected('nav-messages-link'); if(! local_user()) { notice( t('Permission denied.') . EOL); diff --git a/mod/network.php b/mod/network.php index 7bdd3f3f1..8d377fa0e 100644 --- a/mod/network.php +++ b/mod/network.php @@ -98,7 +98,7 @@ function network_content(&$a, $update = 0) { } } - $o .= ''; + $o .= set_nav_selected('nav-network-link'); $_SESSION['return_url'] = $a->cmd; diff --git a/mod/notifications.php b/mod/notifications.php index c6f073058..6f9ece184 100644 --- a/mod/notifications.php +++ b/mod/notifications.php @@ -64,7 +64,7 @@ function notifications_content(&$a) { } $o = ''; - $o .= ''; + $o .= set_nav_selected("nav-notifications-link"); if(($a->argc > 1) && ($a->argv[1] == 'all')) $sql_extra = ''; diff --git a/mod/profile.php b/mod/profile.php index f4b6bfaf1..7e47c91bb 100644 --- a/mod/profile.php +++ b/mod/profile.php @@ -70,7 +70,7 @@ function profile_content(&$a, $update = 0) { } else { if($a->profile['profile_uid'] == local_user()) - $o .= ''; + $o .= set_nav_selected('nav-home-link'); } $contact = null; diff --git a/mod/profiles.php b/mod/profiles.php index 160ca13bc..7041249e2 100644 --- a/mod/profiles.php +++ b/mod/profiles.php @@ -220,7 +220,7 @@ function profiles_post(&$a) { function profiles_content(&$a) { $o = ''; - $o .= ''; + $o .= set_nav_selected('nav-profiles-link'); if(! local_user()) { notice( t('Permission denied.') . EOL); diff --git a/mod/settings.php b/mod/settings.php index 1b4098de8..0223b1b9c 100644 --- a/mod/settings.php +++ b/mod/settings.php @@ -299,7 +299,7 @@ if(! function_exists('settings_content')) { function settings_content(&$a) { $o = ''; - $o .= ''; + $o .= set_nav_selected('nav-settings-link'); if(! local_user()) { notice( t('Permission denied.') . EOL ); -- cgit v1.2.3 From 5fb2b522f47a362debae7ee0c3bcb3b23f36bac6 Mon Sep 17 00:00:00 2001 From: Fabio Comuni Date: Mon, 25 Jul 2011 16:53:27 +0200 Subject: move
and {# -- cgit v1.2.3 From 99ab06bad3eb8b4c20e70c255d9d4b168c137dde Mon Sep 17 00:00:00 2001 From: Fabio Comuni Date: Mon, 25 Jul 2011 16:54:39 +0200 Subject: js to open close popup nav menu and to populate notification menu via ping. Update mod/ping to return details about messages and intros --- include/main.js | 53 ++++++++++++++++++++++++++++++++++------------------- mod/ping.php | 45 +++++++++++++++++++++++++++++++++++++-------- 2 files changed, 71 insertions(+), 27 deletions(-) diff --git a/include/main.js b/include/main.js index d17d923e4..dc39a7281 100644 --- a/include/main.js +++ b/include/main.js @@ -34,6 +34,9 @@ msie = $.browser.msie ; + /* setup navbar menus */ + + /* setup onoff widgets */ $(".onoff input").each(function(){ @@ -55,34 +58,46 @@ /* setup field_richtext */ setupFieldRichtext(); - - /* load tinyMCE if needed and setup field_richtext */ - /*if(typeof tinyMCE == "undefined") { - window.tinyMCEPreInit = { - suffix:"", - base: baseurl+"/library/tinymce/jscripts/tiny_mce/", - query:"", - }; - $.getScript(baseurl +"/library/tinymce/jscripts/tiny_mce/tiny_mce_src.js", setupFieldRichtext); - } else { - }*/ + + /* popup menus */ + $('a[rel^=#]').click(function(e){ + e.stopPropagation(); + menu = $( $(this).attr('rel') ); + $(this).parent().toggleClass("selected"); + menu.toggle(); + return false; + }); + + /* notifications template */ + var notifications_tpl= unescape($("#nav-notifications-template[rel=template]").html()); /* nav update event */ $('nav').bind('nav-update', function(e,data){; var net = $(data).find('net').text(); - if(net == 0) { net = ''; $('#net-update').hide() } else { $('#net-update').show() } + if(net == 0) { net = ''; $('#net-update').removeClass('show') } else { $('#net-update').addClass('show') } $('#net-update').html(net); + var home = $(data).find('home').text(); - if(home == 0) { home = ''; $('#home-update').hide() } else { $('#home-update').show() } + if(home == 0) { home = ''; $('#home-update').removeClass('show') } else { $('#home-update').addClass('show') } $('#home-update').html(home); - var mail = $(data).find('mail').text(); - if(mail == 0) { mail = ''; $('#mail-update').hide() } else { $('#mail-update').show() } - $('#mail-update').html(mail); - var intro = $(data).find('intro').text(); - if(intro == 0) { intro = ''; $('#notify-update').hide() } else { $('#notify-update').show() } - $('#notify-update').html(intro); + + var eNotif = $(data).find('notif') + notif = eNotif.attr('count'); + if (notif>0){ + nnm = $("#nav-notifications-menu"); + nnm.html(""); + eNotif.children("note").each(function(){ + e = $(this); + text = e.text().format(""+e.attr('name')+""); + html = notifications_tpl.format(e.attr('href'),e.attr('photo'), text, e.attr('date')); + nnm.append(html); + }); + } + if(notif == 0) { notif = ''; $('#notify-update').removeClass('show') } else { $('#notify-update').addClass('show') } + $('#notify-update').html(notif); + }); diff --git a/mod/ping.php b/mod/ping.php index 7c31f00c9..e7f366095 100644 --- a/mod/ping.php +++ b/mod/ping.php @@ -1,5 +1,5 @@ get_baseurl() . '/profile/' . $a->user['nickname'] ; - $r = q("SELECT COUNT(*) AS `total` FROM `mail` + $mails = q("SELECT *, COUNT(*) AS `total` FROM `mail` WHERE `uid` = %d AND `seen` = 0 AND `from-url` != '%s' ", intval(local_user()), dbesc($myurl) ); - - $mail = $r[0]['total']; + $mail = $mails[0]['total']; + + header("Content-type: text/xml"); - echo "\r\n$intro$mail$network$home\r\n"; + echo " + + $intro + $mail + $network + $home + "; + if ($intro>0){ + foreach ($intros as $i) { + echo sprintf ('%s', + $a->get_baseurl().'/notification/'.$i['id'], $i['name'], $i['url'], $i['photo'], relative_date($i['datetime']), t("{0} wants to be your friend") + ); + }; + } + if ($mail>0){ + foreach ($mails as $i) { + var_dump($i); + echo sprintf ('%s', + $a->get_baseurl().'/message/'.$i['id'], $i['from-name'], $i['from-url'], $i['from-photo'], relative_date($i['created']), t("{0} sent you a message") + ); + }; + } + + echo " + + "; killme(); } -- cgit v1.2.3 From ba4ea589d00d8d79291191156a64e903b36509aa Mon Sep 17 00:00:00 2001 From: Fabio Comuni Date: Mon, 25 Jul 2011 16:55:43 +0200 Subject: update style --- view/theme/quattro/style.css | 166 ++++++++++++++++++++++--------------- view/theme/quattro/style.less | 187 +++++++++++++++++++++++++----------------- 2 files changed, 213 insertions(+), 140 deletions(-) diff --git a/view/theme/quattro/style.css b/view/theme/quattro/style.css index 055f8e9b6..ec5231290 100644 --- a/view/theme/quattro/style.css +++ b/view/theme/quattro/style.css @@ -2,27 +2,9 @@ * Fabio Comuni **/ /* fonts */ -@font-face { - font-family: "LiberationSans"; - src: local("Liberation Sans"), url(LiberationSans-Regular.ttf) format("truetype"); - font-weight: normal; - font-style: normal; -} -@font-face { - font-family: "LiberationSans"; - src: local("Liberation Sans"), url(LiberationSans-Bold.ttf) format("truetype"); - font-weight: bold; - font-style: normal; -} -@font-face { - font-family: "LiberationSans"; - src: local("Liberation Sans"), url(LiberationSans-Italic.ttf) format("truetype"); - font-weight: normal; - font-style: italic; -} /* global */ body { - font-family: LiberationSans, helvetica, arial, freesans, clean, sans-serif; + font-family: Liberation Sans, helvetica, arial, clean, sans-serif; font-size: 12px; background-color: #FFFFFF; color: #2d2d2d; @@ -41,37 +23,81 @@ a:hover { .right { float: right; } +/* icons */ +.icon { + background-color: transparent ; + background-repeat: no-repeat; + background-position: center center; + display: block; + overflow: hidden; + text-indent: -9999px; +} +.icon.s22 { + width: 22px; + height: 22px; + padding: 1px; +} +.icon.s22.notify { + background-image: url("../../../images/icons/notify_off_22.png"); +} +.icon.s22.gear { + background-image: url("../../../images/icons/gear_22.png"); +} +/* header */ +header { + position: fixed; + left: 0px; + top: 0px; + margin: 0px; + padding: 0px; + width: 100%; + height: 12px; + color: #FFFFFF; +} +header #site-location { + /*font-size:8px; + float:left; + background-color: @Metalic3; + padding: 1px 5px; + margin-left: 20px; + .roundbottom()*/ + + display: none; +} /* nav */ nav { width: 100%; - height: 50px; + height: 32px; + position: fixed; + left: 0px; + top: 0px; background-color: #0e232e; color: #FFFFFF; } nav a, +nav a:active, nav a:visited, nav a:link, nav a:hover { color: #FFFFFF; text-decoration: none; + outline: none; } -nav #site-location { - font-size: 8px; - float: left; - background-color: #364e59; - padding: 1px 5px; - margin-left: 20px; - -moz-border-radius: 0 0 5px 5px; - -webkit-border-radius: 0 0 5px 5px; - border-radius: 0 0 5px 5px; -} -nav #nav { - clear: both; +nav ul { + margin: 0px; padding: 0px 20px; - height: auto; - padding-top: 6px; } -nav #nav .nav-menu-icon { +nav ul li { + list-style: none; + margin: 0px; + padding: 0px; + float: left; +} +nav ul li .menu-popup { + left: 0px; + right: auto; +} +nav .nav-menu-icon { position: relative; height: 22px; padding: 5px; @@ -80,14 +106,17 @@ nav #nav .nav-menu-icon { -webkit-border-radius: 5px 5px 0 0; border-radius: 5px 5px 0 0; } -nav #nav .nav-menu-icon.selected { +nav .nav-menu-icon.selected { background-color: #364e59; } -nav #nav .nav-menu-icon img { +nav .nav-menu-icon img { width: 22px; height: 22px; } -nav #nav .nav-menu { +nav .nav-menu-icon .nav-notify { + top: 3px; +} +nav .nav-menu { position: relative; height: 16px; padding: 5px; @@ -95,10 +124,11 @@ nav #nav .nav-menu { font-size: 14px; border-bottom: 3px solid #0e232e; } -nav #nav .nav-menu.selected { +nav .nav-menu.selected { border-bottom: 3px solid #9eabb0; } -nav #nav .nav-menu .nav-notify { +nav .nav-notify { + display: none; position: absolute; background-color: #19aeff; -moz-border-radius: 5px 5px 5px 5px; @@ -111,10 +141,22 @@ nav #nav .nav-menu .nav-notify { min-width: 15px; text-align: right; } +nav .nav-notify.show { + display: block; +} +nav #nav-site-link { + float: right; +} +nav #nav-site-link .menu-popup { + right: 0px; + left: auto; +} +nav #nav-notifications-link.selected .icon.s22.notify { + background-image: url("../../../images/icons/notify_on_22.png"); +} ul.menu-popup { position: absolute; - /*display: none;*/ - + display: none; width: auto; background: #FFFFFF; color: #2d2d2d; @@ -135,34 +177,26 @@ ul.menu-popup a:hover { ul.menu-popup .menu-sep { border-top: 1px solid #9eabb0; } -.left .menu-popup { - left: 0px; -} -.right .menu-popup { - right: 0px; -} -/* icons */ -.icon { - background-color: transparent ; - background-repeat: no-repeat; - background-position: center center; +ul.menu-popup li { + float: none; + overflow: auto; + height: auto; display: block; } -.icon.s22 { - width: 22px; - height: 22px; +#nav-notifications-menu { + width: 400px; } -.icon.s22.notify_off { - background-image: url("../../../images/icons/notify_off_22.png"); +#nav-notifications-menu img { + float: left; + margin-right: 5px; } -.icon.s22.notify_on { - background-image: url("../../../images/icons/notify_on_22.png"); +#nav-notifications-menu .contactname { + font-weight: bold; } -/* aside */ -aside { - display: none; +#nav-notifications-menu .notif-when { + font-size: 10px; + color: #9eabb0; + display: block; } +/* aside */ /* section */ -section { - display: none; -} diff --git a/view/theme/quattro/style.less b/view/theme/quattro/style.less index e267834a6..53f833cfd 100644 --- a/view/theme/quattro/style.less +++ b/view/theme/quattro/style.less @@ -37,25 +37,27 @@ /* fonts */ -@font-face { - font-family: "LiberationSans"; - src: local("Liberation Sans"), url( LiberationSans-Regular.ttf ) format("truetype"); - font-weight: normal; font-style: normal; -} -@font-face { - font-family: "LiberationSans"; - src: local("Liberation Sans"), url( LiberationSans-Bold.ttf ) format("truetype"); - font-weight: bold; font-style: normal; -} -@font-face { - font-family: "LiberationSans"; - src: local("Liberation Sans"), url( LiberationSans-Italic.ttf ) format("truetype"); - font-weight: normal; font-style: italic; -} - +// @font-face { +// font-family: "LiberationSans"; +// src: local("Liberation Sans"),url( LiberationSans-Regular.ttf ) format("truetype"); +// font-weight: bold; font-style: italic; +// } +// +// @font-face { +// font-family: "LiberationSans"; +// src: local("Liberation Sans"),url( LiberationSans-Bold.ttf ) format("truetype"); +// font-weight: bold; font-style: normal; +// } +// @font-face { +// font-family: "LiberationSans"; +// src: local("Liberation Sans"),url( LiberationSans-Italic.ttf ) format("truetype"); +// font-weight: normal; font-style: italic; +// } + + /* global */ body { - font-family: LiberationSans,helvetica,arial,freesans,clean,sans-serif; + font-family: Liberation Sans,helvetica,arial,clean,sans-serif; font-size: 12px; background-color: #FFFFFF; color: @Grey5; @@ -77,28 +79,70 @@ a:hover {text-decoration: underline; } .left { float: left; } .right { float: right; } -/* nav */ -nav { - width: 100%; height: 50px; - background-color: @Metalic4; - color: #FFFFFF; - a, a:visited, a:link, a:hover { color: #FFFFFF; text-decoration: none; } +/* icons */ + + +.icons(@size: 22) { + &.notify { background-image: url("../../../images/icons/notify_off_@{size}.png"); } + &.gear { background-image: url("../../../images/icons/gear_@{size}.png"); } +} + + +.icon { + background-color: transparent ; + background-repeat: no-repeat; + background-position: center center; + display: block; + overflow: hidden; + text-indent: -9999px; + + &.s22 { + width:22px; height: 22px; + padding: 1px; + .icons(22); + } + +} + + +/* header */ +header { + position: fixed; left: 0px; top: 0px; + margin: 0px; padding: 0px; + width: 100%; height: 12px; + color: #FFFFFF; #site-location { - font-size:8px; + /*font-size:8px; float:left; background-color: @Metalic3; padding: 1px 5px; margin-left: 20px; - .roundbottom() + .roundbottom()*/ + display: none; } +} +/* nav */ +nav { + width: 100%; height: 32px; + position: fixed; left: 0px; top: 0px; + background-color: @Metalic4; + color: #FFFFFF; + + a, a:active, a:visited, a:link, a:hover { color: #FFFFFF; text-decoration: none; outline: none; } + + ul { + margin: 0px; + padding: 0px 20px; + li { + list-style: none; + margin: 0px; padding: 0px; + float: left; + .menu-popup{ left: 0px; right: auto; } + } + + } - #nav { - clear: both; - padding: 0px 20px; - height: auto; - padding-top: 6px; - .nav-menu-icon { position: relative; height: 22px; @@ -110,7 +154,8 @@ nav { background-color: @Metalic3; } - img { width: 22px; height: 22px; } + img { width: 22px; height: 22px; } + .nav-notify { top: 3px; } } .nav-menu { @@ -124,26 +169,37 @@ nav { border-bottom: 3px solid @Metalic2; } - .nav-notify { - position: absolute; - background-color: @Blue1; - .rounded(); - font-size: 10px; - padding: 1px 3px; - top: 0px; - right: -10px; - min-width: 15px; - text-align: right; - } + } + + .nav-notify { + display: none; + position: absolute; + background-color: @Blue1; + .rounded(); + font-size: 10px; + padding: 1px 3px; + top: 0px; + right: -10px; + min-width: 15px; + text-align: right; + &.show{ display: block; } } - } + + + #nav-site-link { + float: right; + .menu-popup{ right: 0px; left: auto; } + } + + #nav-notifications-link.selected .icon.s22.notify { background-image: url("../../../images/icons/notify_on_22.png") } + } ul.menu-popup { position: absolute; - /*display: none;*/ + display: none; width: auto; background: #FFFFFF; color: @Grey5; @@ -151,43 +207,26 @@ ul.menu-popup { padding: 0px; list-style: none; border: 3px solid @Metalic3; - a { display: block; color: @Grey5; padding: 5px 10px;} - a:hover { background-color: @Metalic1; } z-index: 100000; - - .menu-sep { - border-top: 1px solid @Metalic2; - } + + a { display: block; color: @Grey5; padding: 5px 10px;} + a:hover { background-color: @Metalic1; } + .menu-sep { border-top: 1px solid @Metalic2; } + li { float: none; overflow: auto; height: auto; display: block; } } -.left .menu-popup{ left: 0px; } -.right .menu-popup{ right: 0px; } - -/* icons */ - -.icons(@size: 22) { - &.notify_off { background-image: url("../../../images/icons/notify_off_@{size}.png"); } - &.notify_on { background-image: url("../../../images/icons/notify_on_@{size}.png"); } +#nav-notifications-menu { + width: 400px; + img { float: left; margin-right: 5px; } + .contactname { font-weight: bold; } + .notif-when { font-size: 10px; color: @Metalic2; display: block; } } -.icon { - background-color: transparent ; - background-repeat: no-repeat; - background-position: center center; - display: block; - - &.s22 { - width:22px; height: 22px; - .icons(22); - } - -} - /* aside */ -aside { display: none; } +// aside { display: none; } /* section */ -section { display: none;} +// section { display: none;} -- cgit v1.2.3 From 23d6339a4152759d8dcf68afc6e7dea652336d8c Mon Sep 17 00:00:00 2001 From: Fabio Comuni Date: Mon, 25 Jul 2011 17:12:42 +0200 Subject: change to some nav ids, notice in empty notifications popup --- include/main.js | 7 ++++++- view/nav.tpl | 7 ++++--- view/theme/quattro/style.css | 11 ++++++++--- view/theme/quattro/style.less | 10 ++++++++-- 4 files changed, 26 insertions(+), 9 deletions(-) diff --git a/include/main.js b/include/main.js index dc39a7281..3574e6eb8 100644 --- a/include/main.js +++ b/include/main.js @@ -61,8 +61,9 @@ /* popup menus */ $('a[rel^=#]').click(function(e){ - e.stopPropagation(); menu = $( $(this).attr('rel') ); + e.stopPropagation(); + if (menu.attr('popup')=="false") return false; $(this).parent().toggleClass("selected"); menu.toggle(); return false; @@ -72,6 +73,7 @@ /* notifications template */ var notifications_tpl= unescape($("#nav-notifications-template[rel=template]").html()); + var notifications_empty = unescape($("#nav-notifications-menu").html()); /* nav update event */ $('nav').bind('nav-update', function(e,data){; @@ -88,12 +90,15 @@ if (notif>0){ nnm = $("#nav-notifications-menu"); nnm.html(""); + nnm.attr('popup','true'); eNotif.children("note").each(function(){ e = $(this); text = e.text().format(""+e.attr('name')+""); html = notifications_tpl.format(e.attr('href'),e.attr('photo'), text, e.attr('date')); nnm.append(html); }); + } else { + $("#nav-notifications-menu").html(notifications_empty); } if(notif == 0) { notif = ''; $('#notify-update').removeClass('show') } else { $('#notify-update').addClass('show') } $('#notify-update').html(notif); diff --git a/view/nav.tpl b/view/nav.tpl index 454d7ebd0..5a8a904a6 100644 --- a/view/nav.tpl +++ b/view/nav.tpl @@ -5,7 +5,7 @@
- + {# diff --git a/view/theme/quattro/style.css b/view/theme/quattro/style.css index 9b4005037..ea0ed8eac 100644 --- a/view/theme/quattro/style.css +++ b/view/theme/quattro/style.css @@ -172,9 +172,17 @@ nav .nav-notify { nav .nav-notify.show { display: block; } +nav #nav-help-link, +nav #nav-search-link, +nav #nav-directory-link, +nav #nav-apps-link, nav #nav-site-linkmenu { float: right; } +nav #nav-help-link .menu-popup, +nav #nav-search-link .menu-popup, +nav #nav-directory-link .menu-popup, +nav #nav-apps-link .menu-popup, nav #nav-site-linkmenu .menu-popup { right: 0px; left: auto; diff --git a/view/theme/quattro/style.less b/view/theme/quattro/style.less index 1444ffdc1..5f3958f9d 100644 --- a/view/theme/quattro/style.less +++ b/view/theme/quattro/style.less @@ -205,7 +205,10 @@ nav { } - + #nav-help-link, + #nav-search-link, + #nav-directory-link, + #nav-apps-link, #nav-site-linkmenu { float: right; .menu-popup{ right: 0px; left: auto; } -- cgit v1.2.3 From 07b6c868b3a66efc2737dfc6459b4114fea59ba0 Mon Sep 17 00:00:00 2001 From: fabrixxm Date: Wed, 17 Aug 2011 18:36:24 +0200 Subject: remove javascript to set selectect nav item. enanche img template prefetch ignoring --- boot.php | 2 ++ include/nav.php | 20 ++++++++++++++++++++ include/template_processor.php | 13 ++++++++----- index.php | 5 ++--- mod/community.php | 2 +- mod/contacts.php | 2 +- mod/directory.php | 2 +- mod/help.php | 3 ++- mod/message.php | 2 +- mod/network.php | 2 +- mod/notifications.php | 2 +- mod/profile.php | 5 +++-- mod/profiles.php | 2 +- mod/search.php | 2 ++ mod/settings.php | 2 +- view/nav.tpl | 19 ++++++++++--------- 16 files changed, 57 insertions(+), 28 deletions(-) diff --git a/boot.php b/boot.php index 39bb6a9da..399e100d0 100644 --- a/boot.php +++ b/boot.php @@ -5,6 +5,7 @@ require_once('include/network.php'); require_once('include/plugin.php'); require_once('include/text.php'); require_once("include/pgettext.php"); +require_once('include/nav.php'); define ( 'FRIENDIKA_VERSION', '2.2.1074' ); @@ -1156,3 +1157,4 @@ function load_contact_links($uid) { $a->contacts = $ret; return; }} + diff --git a/include/nav.php b/include/nav.php index bb1a5b2d8..f9e72bda7 100644 --- a/include/nav.php +++ b/include/nav.php @@ -157,8 +157,28 @@ function nav(&$a) { '$banner' => $banner, '$emptynotifications' => t('Nothing new here'), '$userinfo' => $userinfo, + '$sel' => $a->nav_sel, )); call_hooks('page_header', $a->page['nav']); +} +/* + * Set a menu item in navbar as selected + * + */ +function nav_set_selected($item){ + $a = get_app(); + $a->nav_sel = array( + 'community' => null, + 'network' => null, + 'home' => null, + 'profiles' => null, + 'notifications' => null, + 'messages' => null, + 'directyory' => null, + 'settings' => null, + 'contacts' => null, + ); + $a->nav_sel[$item] = 'selected'; } diff --git a/include/template_processor.php b/include/template_processor.php index f1d2eae4e..11769bbd0 100644 --- a/include/template_processor.php +++ b/include/template_processor.php @@ -11,15 +11,18 @@ private function _preg_error(){ switch(preg_last_error()){ - case PREG_INTERNAL_ERROR: die('PREG_INTERNAL_ERROR'); break; - case PREG_BACKTRACK_LIMIT_ERROR: die('PREG_BACKTRACK_LIMIT_ERROR'); break; - case PREG_RECURSION_LIMIT_ERROR: die('PREG_RECURSION_LIMIT_ERROR'); break; - case PREG_BAD_UTF8_ERROR: die('PREG_BAD_UTF8_ERROR'); break; - case PREG_BAD_UTF8_OFFSET_ERROR: die('PREG_BAD_UTF8_OFFSET_ERROR'); break; + case PREG_INTERNAL_ERROR: echo('PREG_INTERNAL_ERROR'); break; + case PREG_BACKTRACK_LIMIT_ERROR: echo('PREG_BACKTRACK_LIMIT_ERROR'); break; + case PREG_RECURSION_LIMIT_ERROR: echo('PREG_RECURSION_LIMIT_ERROR'); break; + case PREG_BAD_UTF8_ERROR: echo('PREG_BAD_UTF8_ERROR'); break; + case PREG_BAD_UTF8_OFFSET_ERROR: echo('PREG_BAD_UTF8_OFFSET_ERROR'); break; default: //die("Unknown preg error."); return; } + echo "
";
+			debug_print_backtrace();
+			die();
 		}
 		
 		private function _build_replace($r, $prefix){
diff --git a/index.php b/index.php
index 80e8ca3b0..51c87cae6 100644
--- a/index.php
+++ b/index.php
@@ -195,8 +195,8 @@ if(strlen($a->module)) {
 
 	if(! $a->module_loaded) {
 
-		// Stupid browser tried to pre-fetch our ACL img template. Don't log the event or return anything - just quietly exit.
-		if((x($_SERVER,'QUERY_STRING')) && strpos($_SERVER['QUERY_STRING'],'{0}') !== false) {
+		// Stupid browser tried to pre-fetch our Javascript img template. Don't log the event or return anything - just quietly exit.
+		if((x($_SERVER,'QUERY_STRING')) && preg_match('/{[0-9]}/',$_SERVER['QUERY_STRING']) !== 0) {
 			killme();
 		}
 
@@ -306,7 +306,6 @@ $a->page['content'] .=  '
'; */ if($a->module != 'install') { - require_once('nav.php'); nav($a); } diff --git a/mod/community.php b/mod/community.php index f8bd88d86..cb255029f 100644 --- a/mod/community.php +++ b/mod/community.php @@ -25,7 +25,7 @@ function community_content(&$a, $update = 0) { $o .= '

' . t('Community') . '

'; if(! $update) { - $o .= set_nav_selected('nav-community-link'); + nav_set_selected('community'); $o .= '
' . "\r\n"; $o .= "\r\n"; } diff --git a/mod/contacts.php b/mod/contacts.php index f8b9a743f..eb1de25ad 100644 --- a/mod/contacts.php +++ b/mod/contacts.php @@ -124,7 +124,7 @@ function contacts_content(&$a) { $sort_type = 0; $o = ''; - $o .= set_nav_selected('nav-contacts-link'); + nav_set_selected('contacts'); $_SESSION['return_url'] = $a->get_baseurl() . '/' . $a->cmd; diff --git a/mod/directory.php b/mod/directory.php index 03b6ab4d1..93abcd5de 100644 --- a/mod/directory.php +++ b/mod/directory.php @@ -22,7 +22,7 @@ function directory_content(&$a) { } $o = ''; - $o .= set_nav_selected('nav-directory-link'); + nav_set_selected('directory'); if(x($_SESSION,'theme')) unset($_SESSION['theme']); diff --git a/mod/help.php b/mod/help.php index 495b4ccc2..59e062f6d 100644 --- a/mod/help.php +++ b/mod/help.php @@ -17,6 +17,7 @@ function load_doc_file($s) { function help_content(&$a) { + nav_set_selected('help'); global $lang; @@ -41,4 +42,4 @@ function help_content(&$a) { return Markdown($text); -} \ No newline at end of file +} diff --git a/mod/message.php b/mod/message.php index ff3db06e2..9e8999592 100644 --- a/mod/message.php +++ b/mod/message.php @@ -110,7 +110,7 @@ function message_post(&$a) { function message_content(&$a) { $o = ''; - $o .= set_nav_selected('nav-messages-link'); + nav_set_selected('messages'); if(! local_user()) { notice( t('Permission denied.') . EOL); diff --git a/mod/network.php b/mod/network.php index 7cac7b858..cf4c994f0 100644 --- a/mod/network.php +++ b/mod/network.php @@ -98,7 +98,7 @@ function network_content(&$a, $update = 0) { } } - $o .= set_nav_selected('nav-network-link'); + nav_set_selected('network'); $_SESSION['return_url'] = $a->cmd; diff --git a/mod/notifications.php b/mod/notifications.php index 920d0d82d..0c35d4cd1 100644 --- a/mod/notifications.php +++ b/mod/notifications.php @@ -64,7 +64,7 @@ function notifications_content(&$a) { } $o = ''; - $o .= set_nav_selected("nav-notifications-link"); + nav_set_selected("notifications"); if(($a->argc > 1) && ($a->argv[1] == 'all')) $sql_extra = ''; diff --git a/mod/profile.php b/mod/profile.php index b309ea647..5a66892da 100644 --- a/mod/profile.php +++ b/mod/profile.php @@ -69,8 +69,9 @@ function profile_content(&$a, $update = 0) { $a->profile['profile_uid'] = $update; } else { - if($a->profile['profile_uid'] == local_user()) - $o .= set_nav_selected('nav-home-link'); + if($a->profile['profile_uid'] == local_user()) { + nav_set_selected('home'); + } } $contact = null; diff --git a/mod/profiles.php b/mod/profiles.php index 9b0a2970b..5cc9fa38c 100644 --- a/mod/profiles.php +++ b/mod/profiles.php @@ -220,7 +220,7 @@ function profiles_post(&$a) { function profiles_content(&$a) { $o = ''; - $o .= set_nav_selected('nav-profiles-link'); + nav_set_selected('profiles'); if(! local_user()) { notice( t('Permission denied.') . EOL); diff --git a/mod/search.php b/mod/search.php index 88ff9bbb7..f7ce75905 100644 --- a/mod/search.php +++ b/mod/search.php @@ -13,6 +13,8 @@ function search_content(&$a) { notice( t('Public access denied.') . EOL); return; } + + nav_set_selected('search'); require_once("include/bbcode.php"); require_once('include/security.php'); diff --git a/mod/settings.php b/mod/settings.php index 0223b1b9c..44ebdd77b 100644 --- a/mod/settings.php +++ b/mod/settings.php @@ -299,7 +299,7 @@ if(! function_exists('settings_content')) { function settings_content(&$a) { $o = ''; - $o .= set_nav_selected('nav-settings-link'); + nav_set_selected('settings'); if(! local_user()) { notice( t('Permission denied.') . EOL ); diff --git a/view/nav.tpl b/view/nav.tpl index 0444ea75c..434c9f844 100644 --- a/view/nav.tpl +++ b/view/nav.tpl @@ -15,24 +15,25 @@ {{ if $nav.notifications }}
  • $nav.notifications.1
  • {{ endif }} {{ if $nav.messages }}
  • $nav.messages.1
  • {{ endif }} + {{ if $nav.contacts }}
  • $nav.contacts.1{{ endif }}
  • {{ endif }} {{ if $nav.community }} - {{ endif }} {{ if $nav.network }} - {{ endif }} - {{ if $nav.network }} - @@ -67,19 +68,19 @@ - - - {{ if $nav.apps }} - {{ endif }} @@ -122,7 +123,7 @@ {{ if $nav.settings }}$nav.settings.1{{ endif }} {{ if $nav.profiles }}$nav.profiles.1{{ endif }} -{{ if $nav.contacts }}$nav.contacts.1{{ endif }} + -- cgit v1.2.3 From afdc639f17f0f5e12f291b512ccc12b3df6b2acf Mon Sep 17 00:00:00 2001 From: fabrixxm Date: Wed, 17 Aug 2011 21:59:06 +0200 Subject: fix friend request query in ping --- mod/ping.php | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/mod/ping.php b/mod/ping.php index 973ecb03f..40ce5be0b 100644 --- a/mod/ping.php +++ b/mod/ping.php @@ -20,13 +20,25 @@ function ping_init(&$a) { ); $home = $r[0]['total']; - $intros = q("SELECT COUNT(`intro`.`id`) AS `total`, `intro`.`id`, `intro`.`datetime`, + $intros1 = q("SELECT COUNT(`intro`.`id`) AS `total`, `intro`.`id`, `intro`.`datetime`, `fcontact`.`name`, `fcontact`.`url`, `fcontact`.`photo` FROM `intro` LEFT JOIN `fcontact` ON `intro`.`fid` = `fcontact`.`id` - WHERE `intro`.`uid` = %d AND `intro`.`blocked` = 0 AND `intro`.`ignore` = 0 ", + WHERE `intro`.`uid` = %d AND `intro`.`blocked` = 0 AND `intro`.`ignore` = 0 AND `intro`.`fid`!=0", intval(local_user()) ); - $intro = $intros[0]['total']; + $intros2 = q("SELECT COUNT(`intro`.`id`) AS `total`, `intro`.`id`, `intro`.`datetime`, + `contact`.`name`, `contact`.`url`, `contact`.`photo` + FROM `intro` LEFT JOIN `contact` ON `intro`.`contact-id` = `contact`.`id` + WHERE `intro`.`uid` = %d AND `intro`.`blocked` = 0 AND `intro`.`ignore` = 0 AND `intro`.`contact-id`!=0", + intval(local_user()) + ); + + $intro = $intros1[0]['total'] + $intros2[0]['total']; + if ($intros1[0]['total']==0) $intros1=Array(); + if ($intros2[0]['total']==0) $intros2=Array(); + $intros = $intros1+$intros2; + + $myurl = $a->get_baseurl() . '/profile/' . $a->user['nickname'] ; $mails = q("SELECT *, COUNT(*) AS `total` FROM `mail` @@ -61,7 +73,7 @@ function ping_init(&$a) { if ($intro>0){ foreach ($intros as $i) { echo sprintf ( $notsxml, - $a->get_baseurl().'/notification/'.$i['id'], $i['name'], $i['url'], $i['photo'], relative_date($i['datetime']), t("{0} wants to be your friend") + $a->get_baseurl().'/notifications/'.$i['id'], $i['name'], $i['url'], $i['photo'], relative_date($i['datetime']), t("{0} wants to be your friend") ); }; } -- cgit v1.2.3 From d5567eb2976f903f7219f6b18a07ab79bca74dbd Mon Sep 17 00:00:00 2001 From: fabrixxm Date: Mon, 22 Aug 2011 14:06:55 +0200 Subject: compatiblity for old themes --- view/theme/clean/nav.tpl | 51 +++++++++++++++++++++++++++++++++++++++++ view/theme/darkness/nav.tpl | 51 +++++++++++++++++++++++++++++++++++++++++ view/theme/darkzero/nav.tpl | 51 +++++++++++++++++++++++++++++++++++++++++ view/theme/duepuntozero/nav.tpl | 51 +++++++++++++++++++++++++++++++++++++++++ view/theme/easterbunny/nav.tpl | 51 +++++++++++++++++++++++++++++++++++++++++ view/theme/goldenrod/nav.tpl | 51 +++++++++++++++++++++++++++++++++++++++++ view/theme/greenzero/nav.tpl | 51 +++++++++++++++++++++++++++++++++++++++++ view/theme/loozah/nav.tpl | 51 +++++++++++++++++++++++++++++++++++++++++ view/theme/purplezero/nav.tpl | 51 +++++++++++++++++++++++++++++++++++++++++ view/theme/shady/nav.tpl | 51 +++++++++++++++++++++++++++++++++++++++++ view/theme/three-d/nav.tpl | 51 +++++++++++++++++++++++++++++++++++++++++ 11 files changed, 561 insertions(+) create mode 100644 view/theme/clean/nav.tpl create mode 100644 view/theme/darkness/nav.tpl create mode 100644 view/theme/darkzero/nav.tpl create mode 100644 view/theme/duepuntozero/nav.tpl create mode 100644 view/theme/easterbunny/nav.tpl create mode 100644 view/theme/goldenrod/nav.tpl create mode 100644 view/theme/greenzero/nav.tpl create mode 100644 view/theme/loozah/nav.tpl create mode 100644 view/theme/purplezero/nav.tpl create mode 100644 view/theme/shady/nav.tpl create mode 100644 view/theme/three-d/nav.tpl diff --git a/view/theme/clean/nav.tpl b/view/theme/clean/nav.tpl new file mode 100644 index 000000000..2cd29a7c2 --- /dev/null +++ b/view/theme/clean/nav.tpl @@ -0,0 +1,51 @@ + diff --git a/view/theme/darkness/nav.tpl b/view/theme/darkness/nav.tpl new file mode 100644 index 000000000..2cd29a7c2 --- /dev/null +++ b/view/theme/darkness/nav.tpl @@ -0,0 +1,51 @@ + diff --git a/view/theme/darkzero/nav.tpl b/view/theme/darkzero/nav.tpl new file mode 100644 index 000000000..2cd29a7c2 --- /dev/null +++ b/view/theme/darkzero/nav.tpl @@ -0,0 +1,51 @@ + diff --git a/view/theme/duepuntozero/nav.tpl b/view/theme/duepuntozero/nav.tpl new file mode 100644 index 000000000..2cd29a7c2 --- /dev/null +++ b/view/theme/duepuntozero/nav.tpl @@ -0,0 +1,51 @@ + diff --git a/view/theme/easterbunny/nav.tpl b/view/theme/easterbunny/nav.tpl new file mode 100644 index 000000000..2cd29a7c2 --- /dev/null +++ b/view/theme/easterbunny/nav.tpl @@ -0,0 +1,51 @@ + diff --git a/view/theme/goldenrod/nav.tpl b/view/theme/goldenrod/nav.tpl new file mode 100644 index 000000000..2cd29a7c2 --- /dev/null +++ b/view/theme/goldenrod/nav.tpl @@ -0,0 +1,51 @@ + diff --git a/view/theme/greenzero/nav.tpl b/view/theme/greenzero/nav.tpl new file mode 100644 index 000000000..2cd29a7c2 --- /dev/null +++ b/view/theme/greenzero/nav.tpl @@ -0,0 +1,51 @@ + diff --git a/view/theme/loozah/nav.tpl b/view/theme/loozah/nav.tpl new file mode 100644 index 000000000..2cd29a7c2 --- /dev/null +++ b/view/theme/loozah/nav.tpl @@ -0,0 +1,51 @@ + diff --git a/view/theme/purplezero/nav.tpl b/view/theme/purplezero/nav.tpl new file mode 100644 index 000000000..2cd29a7c2 --- /dev/null +++ b/view/theme/purplezero/nav.tpl @@ -0,0 +1,51 @@ + diff --git a/view/theme/shady/nav.tpl b/view/theme/shady/nav.tpl new file mode 100644 index 000000000..2cd29a7c2 --- /dev/null +++ b/view/theme/shady/nav.tpl @@ -0,0 +1,51 @@ + diff --git a/view/theme/three-d/nav.tpl b/view/theme/three-d/nav.tpl new file mode 100644 index 000000000..2cd29a7c2 --- /dev/null +++ b/view/theme/three-d/nav.tpl @@ -0,0 +1,51 @@ + -- cgit v1.2.3 From 89c5733ca566f6f6e5568b4a4f22e20d60d7442d Mon Sep 17 00:00:00 2001 From: fabrixxm Date: Tue, 23 Aug 2011 13:52:20 +0200 Subject: add more notification messages --- mod/ping.php | 106 ++++++++++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 86 insertions(+), 20 deletions(-) diff --git a/mod/ping.php b/mod/ping.php index 40ce5be0b..f9d7cd8a7 100644 --- a/mod/ping.php +++ b/mod/ping.php @@ -8,17 +8,63 @@ function ping_init(&$a) { xml_status(0); - $r = q("SELECT COUNT(*) AS `total` FROM `item` - WHERE `unseen` = 1 AND `visible` = 1 AND `deleted` = 0 AND `uid` = %d AND `wall` = 0 ", + $comments = array(); + $likes = array(); + $dislikes = array(); + $friends = array(); + + $r = q("SELECT `item`.`parent`, `item`.`verb`, `item`.`author-name`, + `item`.`author-link`, `item`.`author-avatar`, `item`.`created`, + `pitem`.`author-name` as `pname`, `pitem`.`author-link` as `plink` + FROM `item` INNER JOIN `item` as `pitem` ON `pitem`.`id`=`item`.`parent` + WHERE `item`.`unseen` = 1 AND `item`.`visible` = 1 AND + `item`.`deleted` = 0 AND `item`.`uid` = %d AND `item`.`wall` = 0", intval(local_user()) ); - $network = $r[0]['total']; + + $network = count($r); + foreach ($r as $it) { + switch($it['verb']){ + case 'http://activitystrea.ms/schema/1.0/like': + $likes[] = $it; + break; + case 'http://activitystrea.ms/schema/1.0/dislike': + $dislikes[] = $it; + break; + case 'http://activitystrea.ms/schema/1.0/make-friend': + $friends[] = $it; + break; + default: + $comments[] = $it; + } + } - $r = q("SELECT COUNT(*) AS `total` FROM `item` - WHERE `unseen` = 1 AND `visible` = 1 AND `deleted` = 0 AND `uid` = %d AND `wall` = 1 ", + + $r = q("SELECT `item`.`parent`, `item`.`verb`, `item`.`author-name`, + `item`.`author-link`, `item`.`author-avatar`, `item`.`created`, + `pitem`.`author-name` as `pname`, `pitem`.`author-link` as `plink` + FROM `item` INNER JOIN `item` as `pitem` ON `pitem`.`id`=`item`.`parent` + WHERE `item`.`unseen` = 1 AND `item`.`visible` = 1 AND + `item`.`deleted` = 0 AND `item`.`uid` = %d AND `item`.`wall` = 1", intval(local_user()) - ); - $home = $r[0]['total']; + ); + $home = count($r); + foreach ($r as $it) { + switch($it['verb']){ + case 'http://activitystrea.ms/schema/1.0/like': + $likes[] = $it; + break; + case 'http://activitystrea.ms/schema/1.0/dislike': + $dislikes[] = $it; + break; + case 'http://activitystrea.ms/schema/1.0/make-friend': + $friends[] = $it; + break; + default: + $comments[] = $it; + } + } + $intros1 = q("SELECT COUNT(`intro`.`id`) AS `total`, `intro`.`id`, `intro`.`datetime`, `fcontact`.`name`, `fcontact`.`url`, `fcontact`.`photo` @@ -56,9 +102,12 @@ function ping_init(&$a) { } - $notsxml = '%s'; - - + function xmlize($href, $name, $url, $photo, $date, $message){ + $notsxml = '%s'; + return sprintf ( $notsxml, + $href, $name, $url, $photo, $date, $message + ); + } header("Content-type: text/xml"); echo " @@ -69,26 +118,43 @@ function ping_init(&$a) { $home"; if ($register!=0) echo "$register"; - echo ' '; + $tot = $mail+$intro+$register+count($comments)+count($likes)+count($dislikes)+count($friends); + + echo ' '; if ($intro>0){ foreach ($intros as $i) { - echo sprintf ( $notsxml, - $a->get_baseurl().'/notifications/'.$i['id'], $i['name'], $i['url'], $i['photo'], relative_date($i['datetime']), t("{0} wants to be your friend") - ); + echo xmlize( $a->get_baseurl().'/notifications/'.$i['id'], $i['name'], $i['url'], $i['photo'], relative_date($i['datetime']), t("{0} wants to be your friend") ); }; } if ($mail>0){ foreach ($mails as $i) { - echo sprintf ( $notsxml, - $a->get_baseurl().'/message/'.$i['id'], $i['from-name'], $i['from-url'], $i['from-photo'], relative_date($i['created']), t("{0} sent you a message") - ); + echo xmlize( $a->get_baseurl().'/message/'.$i['id'], $i['from-name'], $i['from-url'], $i['from-photo'], relative_date($i['created']), t("{0} sent you a message") ); }; } if ($register>0){ foreach ($regs as $i) { - echo sprintf ( $notsxml, - $a->get_baseurl().'/admin/users/', $i['name'], $i['url'], $i['micro'], relative_date($i['created']), t("{0} requested registration") - ); + echo xmlize( $a->get_baseurl().'/admin/users/', $i['name'], $i['url'], $i['micro'], relative_date($i['created']), t("{0} requested registration") ); + }; + } + + if (count($comments)){ + foreach ($comments as $i) { + echo xmlize( $a->get_baseurl().'/display/'.$a->user['nickname']."/".$i['parent'], $i['author-name'], $i['author-link'], $i['author-avatar'], relative_date($i['created']), sprintf( t("{0} commented %s's post"), $i['pname'] ) ); + }; + } + if (count($likes)){ + foreach ($likes as $i) { + echo xmlize( $a->get_baseurl().'/display/'.$a->user['nickname']."/".$i['parent'], $i['author-name'], $i['author-link'], $i['author-avatar'], relative_date($i['created']), sprintf( t("{0} like %s's post"), $i['pname'] ) ); + }; + } + if (count($dislikes)){ + foreach ($dislikes as $i) { + echo xmlize( $a->get_baseurl().'/display/'.$a->user['nickname']."/".$i['parent'], $i['author-name'], $i['author-link'], $i['author-avatar'], relative_date($i['created']), sprintf( t("{0} dislike %s's post"), $i['pname'] ) ); + }; + } + if (count($friends)){ + foreach ($friends as $i) { + echo xmlize( $a->get_baseurl().'/display/'.$a->user['nickname']."/".$i['parent'], $i['author-name'], $i['author-link'], $i['author-avatar'], relative_date($i['created']), sprintf( t("{0} is now friend with %s"), $i['pname'] ) ); }; } -- cgit v1.2.3 From 97806544bcd7ee3831ffc515062afe0812828b76 Mon Sep 17 00:00:00 2001 From: fabrixxm Date: Tue, 23 Aug 2011 14:02:04 +0200 Subject: don't add notification details on new posts --- mod/ping.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mod/ping.php b/mod/ping.php index f9d7cd8a7..8a3d284af 100644 --- a/mod/ping.php +++ b/mod/ping.php @@ -13,7 +13,7 @@ function ping_init(&$a) { $dislikes = array(); $friends = array(); - $r = q("SELECT `item`.`parent`, `item`.`verb`, `item`.`author-name`, + $r = q("SELECT `item`.`id`,`item`.`parent`, `item`.`verb`, `item`.`author-name`, `item`.`author-link`, `item`.`author-avatar`, `item`.`created`, `pitem`.`author-name` as `pname`, `pitem`.`author-link` as `plink` FROM `item` INNER JOIN `item` as `pitem` ON `pitem`.`id`=`item`.`parent` @@ -35,12 +35,12 @@ function ping_init(&$a) { $friends[] = $it; break; default: - $comments[] = $it; + if ($it['parent']!=$it['id']) $comments[] = $it; } } - $r = q("SELECT `item`.`parent`, `item`.`verb`, `item`.`author-name`, + $r = q("SELECT `item`.`id`,`item`.`parent`, `item`.`verb`, `item`.`author-name`, `item`.`author-link`, `item`.`author-avatar`, `item`.`created`, `pitem`.`author-name` as `pname`, `pitem`.`author-link` as `plink` FROM `item` INNER JOIN `item` as `pitem` ON `pitem`.`id`=`item`.`parent` @@ -61,7 +61,7 @@ function ping_init(&$a) { $friends[] = $it; break; default: - $comments[] = $it; + if ($it['parent']!=$it['id']) $comments[] = $it; } } -- cgit v1.2.3 From 71d44d78ec5b16a53b82f4e631b86cd8247a9b0f Mon Sep 17 00:00:00 2001 From: Fabio Comuni Date: Wed, 31 Aug 2011 16:17:32 +0200 Subject: Installed apps as array instead of string --- addon/calc/calc.php | 2 +- addon/convert/convert.php | 2 +- addon/sniper/sniper.php | 2 +- addon/tictac/tictac.php | 2 +- boot.php | 2 +- mod/apps.php | 19 +++++++++++-------- view/apps.tpl | 7 +++++++ 7 files changed, 23 insertions(+), 13 deletions(-) create mode 100644 view/apps.tpl diff --git a/addon/calc/calc.php b/addon/calc/calc.php index 8c079dc7a..47fb22d33 100644 --- a/addon/calc/calc.php +++ b/addon/calc/calc.php @@ -17,7 +17,7 @@ function calc_uninstall() { } function calc_app_menu($a,&$b) { - $b['app_menu'] .= ''; + $b['app_menu'][] = Array('url'=>'calc', 'name'=>'Calculator'); } diff --git a/addon/convert/convert.php b/addon/convert/convert.php index 7a4c90a53..aaa56a43e 100644 --- a/addon/convert/convert.php +++ b/addon/convert/convert.php @@ -15,7 +15,7 @@ function convert_uninstall() { } function convert_app_menu($a,&$b) { - $b['app_menu'] .= ''; + $b['app_menu'][] = Array('url'=>'convert', 'name'=>'Units Conversion'); } diff --git a/addon/sniper/sniper.php b/addon/sniper/sniper.php index d431a2466..c7d29cfdf 100644 --- a/addon/sniper/sniper.php +++ b/addon/sniper/sniper.php @@ -22,7 +22,7 @@ function sniper_uninstall() { } function sniper_app_menu($a,&$b) { - $b['app_menu'] .= ''; + $b['app_menu'][] = Array('url'=>'sniper', 'name'=>'Hot Shot Sniper'); } diff --git a/addon/tictac/tictac.php b/addon/tictac/tictac.php index d6cec08a0..cc2701f8b 100644 --- a/addon/tictac/tictac.php +++ b/addon/tictac/tictac.php @@ -17,7 +17,7 @@ function tictac_uninstall() { } function tictac_app_menu($a,&$b) { - $b['app_menu'] .= ''; + $b['app_menu'][] = Array('url'=>'tictac', 'name'=>'Three Dimensional Tic-Tac-Toe'); } diff --git a/boot.php b/boot.php index 4baa37309..42a0f7207 100644 --- a/boot.php +++ b/boot.php @@ -246,7 +246,7 @@ class App { public $timezone; public $interactive = true; public $plugins; - public $apps; + public $apps = Array(); public $identities; private $scheme; diff --git a/mod/apps.php b/mod/apps.php index 7a0a3f59e..8049b45fb 100644 --- a/mod/apps.php +++ b/mod/apps.php @@ -1,15 +1,18 @@ ' . t('Applications') . ''; - - if($a->apps) - $o .= $a->apps; - else + if(count($a->apps)==0) notice( t('No installed applications.') . EOL); - return $o; -} \ No newline at end of file + $tpl = get_markup_template("apps.tpl"); + return replace_macros($tpl, array( + '$title' => $title, + '$apps' => $a->apps, + )); + + + +} diff --git a/view/apps.tpl b/view/apps.tpl new file mode 100644 index 000000000..61ea9ee5f --- /dev/null +++ b/view/apps.tpl @@ -0,0 +1,7 @@ +

    $title

    + +
      + {{ for $apps as $ap }} +
    • $ap.name
    • + {{ endfor }} +
    -- cgit v1.2.3 From 5ce6f893a64984eae9685db305b8d29ae3ced509 Mon Sep 17 00:00:00 2001 From: Fabio Comuni Date: Wed, 31 Aug 2011 16:18:03 +0200 Subject: Apps popup menu in navbar --- include/nav.php | 3 ++- view/nav.tpl | 7 ++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/include/nav.php b/include/nav.php index f9e72bda7..b290a8da2 100644 --- a/include/nav.php +++ b/include/nav.php @@ -81,7 +81,7 @@ function nav(&$a) { if(! get_config('system','hide_help')) $nav['help'] = array($help_url, t('Help'), "", t('Help and documentation')); - if($a->apps) + if(count($a->apps)>0) $nav['apps'] = array('apps', t('Apps'), "", t('Addon applications, utilities, games')); $nav['search'] = array('search', t('Search'), "", t('Search site content')); @@ -158,6 +158,7 @@ function nav(&$a) { '$emptynotifications' => t('Nothing new here'), '$userinfo' => $userinfo, '$sel' => $a->nav_sel, + '$apps' => $a->apps, )); call_hooks('page_header', $a->page['nav']); diff --git a/view/nav.tpl b/view/nav.tpl index 434c9f844..cf1c2a227 100644 --- a/view/nav.tpl +++ b/view/nav.tpl @@ -81,7 +81,12 @@ {{ if $nav.apps }} {{ endif }} -- cgit v1.2.3 From b38d6d97c3746203241c5ef50a8dd9f0bb0a0de0 Mon Sep 17 00:00:00 2001 From: Fabio Comuni Date: Wed, 31 Aug 2011 16:18:37 +0200 Subject: Avoid a small error in admin --- mod/admin.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mod/admin.php b/mod/admin.php index 7799e64ab..bbf786acb 100644 --- a/mod/admin.php +++ b/mod/admin.php @@ -540,7 +540,7 @@ function admin_page_plugins(&$a){ } $admin_form=""; - if (in_array($plugin, $a->plugins_admin)){ + if (is_array($a->plugins_admin) && in_array($plugin, $a->plugins_admin)){ @require_once("addon/$plugin/$plugin.php"); $func = $plugin.'_plugin_admin'; $func($a, $admin_form); -- cgit v1.2.3 From 62295af1f2c3434fbf40aff6d29fd08859259ddf Mon Sep 17 00:00:00 2001 From: Fabio Comuni Date: Wed, 31 Aug 2011 16:19:17 +0200 Subject: quattro: cleanup and split of less files --- view/theme/quattro/LIBERATION-FONTS-COPYING | 339 --------------------- view/theme/quattro/LiberationSans-Bold.ttf | Bin 136664 -> 0 bytes view/theme/quattro/LiberationSans-Italic.ttf | Bin 161532 -> 0 bytes view/theme/quattro/LiberationSans-Regular.ttf | Bin 139036 -> 0 bytes view/theme/quattro/colors.less | 50 +++ view/theme/quattro/experimental | 0 .../quattro/liberation-fonts-ttf-1.07.0.tar.gz | Bin 1326750 -> 0 bytes view/theme/quattro/quattro.less | 212 +++++++++++++ view/theme/quattro/style.css | 17 +- view/theme/quattro/style.less | 260 +--------------- 10 files changed, 273 insertions(+), 605 deletions(-) delete mode 100644 view/theme/quattro/LIBERATION-FONTS-COPYING delete mode 100644 view/theme/quattro/LiberationSans-Bold.ttf delete mode 100644 view/theme/quattro/LiberationSans-Italic.ttf delete mode 100644 view/theme/quattro/LiberationSans-Regular.ttf create mode 100644 view/theme/quattro/colors.less create mode 100644 view/theme/quattro/experimental delete mode 100644 view/theme/quattro/liberation-fonts-ttf-1.07.0.tar.gz create mode 100644 view/theme/quattro/quattro.less diff --git a/view/theme/quattro/LIBERATION-FONTS-COPYING b/view/theme/quattro/LIBERATION-FONTS-COPYING deleted file mode 100644 index d511905c1..000000000 --- a/view/theme/quattro/LIBERATION-FONTS-COPYING +++ /dev/null @@ -1,339 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. diff --git a/view/theme/quattro/LiberationSans-Bold.ttf b/view/theme/quattro/LiberationSans-Bold.ttf deleted file mode 100644 index 169fac34d..000000000 Binary files a/view/theme/quattro/LiberationSans-Bold.ttf and /dev/null differ diff --git a/view/theme/quattro/LiberationSans-Italic.ttf b/view/theme/quattro/LiberationSans-Italic.ttf deleted file mode 100644 index 8b9dc760a..000000000 Binary files a/view/theme/quattro/LiberationSans-Italic.ttf and /dev/null differ diff --git a/view/theme/quattro/LiberationSans-Regular.ttf b/view/theme/quattro/LiberationSans-Regular.ttf deleted file mode 100644 index ceeaa2740..000000000 Binary files a/view/theme/quattro/LiberationSans-Regular.ttf and /dev/null differ diff --git a/view/theme/quattro/colors.less b/view/theme/quattro/colors.less new file mode 100644 index 000000000..75a53a68a --- /dev/null +++ b/view/theme/quattro/colors.less @@ -0,0 +1,50 @@ +// Quattro Theme LESS file + +// "Echo" palette from Inkscape +@Blue1:rgb(25,174,255); +@Blue2:rgb(0,132,200); +@Blue3:rgb(0,92,148); +@Red1:rgb(255,65,65); +@Red2:rgb(220,0,0); +@Red3:rgb(181,0,0); +@Orange1:rgb(255,255,62); +@Orange2:rgb(255,153,0); +@Orange3:rgb(255,102,0); +@Brown1:rgb(255,192,34); +@Brown2:rgb(184,129,0); +@Brown3:rgb(128,77,0); +@Green1:rgb(204,255,66); +@Green2:rgb(154,222,0); +@Green3:rgb(0,145,0); +@Purple1:rgb(241,202,255); +@Purple2:rgb(215,108,255); +@Purple3:rgb(186,0,255); +@Metalic1:rgb(189,205,212); +@Metalic2:rgb(158,171,176); +@Metalic3:rgb(54,78,89); +@Metalic4:rgb(14,35,46); +@Grey1:rgb(255,255,255); +@Grey2:rgb(204,204,204); +@Grey3:rgb(153,153,153); +@Grey4:rgb(102,102,102); +@Grey5:rgb(45,45,45); + + +// Theme colors +@BodyBackground: @Grey1; +@BodyColor: @Grey5; + +@Link: @Blue3; +@LinkHover: @Blue3; +@LinkVisited: @Blue3; + +@Banner: @Grey1; + +@NavbarBackground:@Metalic4; +@NavbarSelectedBg:@Metalic3; +@NavbarSelectedBorder: @Metalic2; +@NavbarNotifBg: @Blue1; +@Menu: @Grey5; +@MenuBg: @Grey1; +@MenuBorder: @Metalic3; + diff --git a/view/theme/quattro/experimental b/view/theme/quattro/experimental new file mode 100644 index 000000000..e69de29bb diff --git a/view/theme/quattro/liberation-fonts-ttf-1.07.0.tar.gz b/view/theme/quattro/liberation-fonts-ttf-1.07.0.tar.gz deleted file mode 100644 index 0c86f7347..000000000 Binary files a/view/theme/quattro/liberation-fonts-ttf-1.07.0.tar.gz and /dev/null differ diff --git a/view/theme/quattro/quattro.less b/view/theme/quattro/quattro.less new file mode 100644 index 000000000..4c4a002f3 --- /dev/null +++ b/view/theme/quattro/quattro.less @@ -0,0 +1,212 @@ +// Quattro Theme LESS file + +/* global */ +body { + font-family: Liberation Sans,helvetica,arial,clean,sans-serif; + font-size: 12px; + background-color: @BodyBackground; + color: @BodyColor; + margin: 0px; + display:table-row; +} + +.shadow(@x: 0px, @y: 5px){ + -webkit-box-shadow:@x @y 10px rgba(0, 0, 0, 0.7); + -moz-box-shadow:@x @y 10px rgba(0, 0, 0, 0.7); + box-shadow:@x @y 10px rgba(0, 0, 0, 0.7); +} + +.rounded(@tr: 5px, @tl: 5px, @bl: 5px, @br: 5px){ + -moz-border-radius: @arguments; + -webkit-border-radius: @arguments; + border-radius: @arguments; +} + +.roundbottom (@radius: 5px){ .rounded(0, 0, @radius, @radius); } +.roundtop (@radius: 5px){ .rounded(@radius, @radius, 0, 0); } + +a, a:link { color: @Link; text-decoration: none; } +a:visited { color: @LinkVisited; text-decoration: none; } +a:hover {color: @LinkHover; text-decoration: underline; } + +.left { float: left; } +.right { float: right; } + +/* icons */ + + +.icons(@size: 22) { + &.notify { background-image: url("../../../images/icons/notify_off_@{size}.png"); } + &.gear { background-image: url("../../../images/icons/gear_@{size}.png"); } +} + + +.icon { + background-color: transparent ; + background-repeat: no-repeat; + background-position: center center; + display: block; + overflow: hidden; + text-indent: -9999px; + + &.s22 { + width:22px; height: 22px; + padding: 1px; + .icons(22); + } + +} + + + +/* header */ +header { + position: fixed; left: 43%; right: 43%; top: 0px; + margin: 0px; padding: 0px; + /*width: 100%; height: 12px; */ + z-index: 110; + color: @Grey1; + #site-location { + display: none; + } + + #banner { + + text-align: center; + width: 100%; + a, a:active, a:visited, a:link, a:hover { color: @Grey1; text-decoration: none; outline: none; vertical-align: bottom; } + #logo-img { height: 22px; margin-top:5px;} + #logo-text { font-size: 22px } + } +} +/* nav */ +nav { + width: 100%; height: 32px; + position: fixed; left: 0px; top: 0px; + padding: 0px; + background-color: @NavbarBackground; + color: @Grey1; + z-index: 100; + .shadow(0px, 0px); + + a, a:active, a:visited, a:link, a:hover { color: @Banner; text-decoration: none; outline: none; } + + ul { + margin: 0px; + padding: 0px 20px; + li { + list-style: none; + margin: 0px; padding: 0px; + float: left; + .menu-popup{ left: 0px; right: auto; } + } + + } + + .nav-menu-icon { + position: relative; + height: 22px; + padding: 5px; + margin: 0px 10px; + .roundtop(); + + &.selected { + background-color: @NavbarSelectedBg; + } + + img { width: 22px; height: 22px; } + .nav-notify { top: 3px; } + } + + .nav-menu { + position: relative; + height: 16px; + padding: 5px; + margin: 3px 15px 0px; + font-size: 14px; + border-bottom: 3px solid @NavbarBackground; + &.selected { + border-bottom: 3px solid @NavbarSelectedBorder; + } + + } + + .nav-notify { + display: none; + position: absolute; + background-color: @NavbarNotifBg; + .rounded(); + font-size: 10px; + padding: 1px 3px; + top: 0px; + right: -10px; + min-width: 15px; + text-align: right; + + &.show{ display: block; } + } + + + #nav-help-link, + #nav-search-link, + #nav-directory-link, + #nav-apps-link, + #nav-site-linkmenu { + float: right; + .menu-popup{ right: 0px; left: auto; } + } + + #nav-notifications-linkmenu.selected .icon.s22.notify { background-image: url("../../../images/icons/notify_on_22.png") } + #nav-apps-link.selected { background-color: @NavbarSelectedBg; } +} + + +ul.menu-popup { + position: absolute; + display: none; + width: 10em; + background: @MenuBg; + color: @Menu; + margin: 0px; + padding: 0px; + list-style: none; + border: 3px solid @MenuBorder; + z-index: 100000; + + .shadow(); + + a { display: block; color: @Grey5; padding: 5px 10px;} + a:hover { background-color: @Metalic1; } + .menu-sep { border-top: 1px solid @Metalic2; } + li { float: none; overflow: auto; height: auto; display: block; } + + .empty { + padding: 5px; + text-align: center; + color: @Metalic2; + } +} + +#nav-notifications-menu { + width: 400px; + img { float: left; margin-right: 5px; } + .contactname { font-weight: bold; } + .notif-when { font-size: 10px; color: @Metalic2; display: block; } +} + + + + +/* aside */ +aside { + display: table-cell; + width: 200px; + padding:50px 10px 0px 20px; +} + +/* section */ +section { + display: table-cell; + width: 800px; + padding:50px 20px 0px 10px; +} diff --git a/view/theme/quattro/style.css b/view/theme/quattro/style.css index ea0ed8eac..e2c06125b 100644 --- a/view/theme/quattro/style.css +++ b/view/theme/quattro/style.css @@ -10,11 +10,16 @@ body { margin: 0px; display: table-row; } -a, a:visited, a:link { +a, a:link { + color: #005c94; + text-decoration: none; +} +a:visited { color: #005c94; text-decoration: none; } a:hover { + color: #005c94; text-decoration: underline; } .left { @@ -57,13 +62,6 @@ header { color: #ffffff; } header #site-location { - /*font-size:8px; - float:left; - background-color: @Metalic3; - padding: 1px 5px; - margin-left: 20px; - .roundbottom()*/ - display: none; } header #banner { @@ -190,6 +188,9 @@ nav #nav-site-linkmenu .menu-popup { nav #nav-notifications-linkmenu.selected .icon.s22.notify { background-image: url("../../../images/icons/notify_on_22.png"); } +nav #nav-apps-link.selected { + background-color: #364e59; +} ul.menu-popup { position: absolute; display: none; diff --git a/view/theme/quattro/style.less b/view/theme/quattro/style.less index 5f3958f9d..d1c677b22 100644 --- a/view/theme/quattro/style.less +++ b/view/theme/quattro/style.less @@ -5,265 +5,9 @@ // compile with lessc // $ lessc style.less > style.css -// "Echo" palette from Inkscape -@Blue1:rgb(25,174,255); -@Blue2:rgb(0,132,200); -@Blue3:rgb(0,92,148); -@Red1:rgb(255,65,65); -@Red2:rgb(220,0,0); -@Red3:rgb(181,0,0); -@Orange1:rgb(255,255,62); -@Orange2:rgb(255,153,0); -@Orange3:rgb(255,102,0); -@Brown1:rgb(255,192,34); -@Brown2:rgb(184,129,0); -@Brown3:rgb(128,77,0); -@Green1:rgb(204,255,66); -@Green2:rgb(154,222,0); -@Green3:rgb(0,145,0); -@Purple1:rgb(241,202,255); -@Purple2:rgb(215,108,255); -@Purple3:rgb(186,0,255); -@Metalic1:rgb(189,205,212); -@Metalic2:rgb(158,171,176); -@Metalic3:rgb(54,78,89); -@Metalic4:rgb(14,35,46); -@Grey1:rgb(255,255,255); -@Grey2:rgb(204,204,204); -@Grey3:rgb(153,153,153); -@Grey4:rgb(102,102,102); -@Grey5:rgb(45,45,45); +@import "colors"; +@import "quattro"; -///* fonts */ -// @font-face { -// font-family: "LiberationSans"; -// src: local("Liberation Sans"),url( LiberationSans-Regular.ttf ) format("truetype"); -// font-weight: bold; font-style: italic; -// } -// -// @font-face { -// font-family: "LiberationSans"; -// src: local("Liberation Sans"),url( LiberationSans-Bold.ttf ) format("truetype"); -// font-weight: bold; font-style: normal; -// } -// @font-face { -// font-family: "LiberationSans"; -// src: local("Liberation Sans"),url( LiberationSans-Italic.ttf ) format("truetype"); -// font-weight: normal; font-style: italic; -// } -/* global */ -body { - font-family: Liberation Sans,helvetica,arial,clean,sans-serif; - font-size: 12px; - background-color: @Grey1; - color: @Grey5; - margin: 0px; - display:table-row; -} -.shadow(@x: 0px, @y: 5px){ - -webkit-box-shadow:@x @y 10px rgba(0, 0, 0, 0.7); - -moz-box-shadow:@x @y 10px rgba(0, 0, 0, 0.7); - box-shadow:@x @y 10px rgba(0, 0, 0, 0.7); -} - -.rounded(@tr: 5px, @tl: 5px, @bl: 5px, @br: 5px){ - -moz-border-radius: @arguments; - -webkit-border-radius: @arguments; - border-radius: @arguments; -} - -.roundbottom (@radius: 5px){ .rounded(0, 0, @radius, @radius); } -.roundtop (@radius: 5px){ .rounded(@radius, @radius, 0, 0); } - -a, a:visited, a:link { color: @Blue3; text-decoration: none; } -a:hover {text-decoration: underline; } - -.left { float: left; } -.right { float: right; } - -/* icons */ - - -.icons(@size: 22) { - &.notify { background-image: url("../../../images/icons/notify_off_@{size}.png"); } - &.gear { background-image: url("../../../images/icons/gear_@{size}.png"); } -} - - -.icon { - background-color: transparent ; - background-repeat: no-repeat; - background-position: center center; - display: block; - overflow: hidden; - text-indent: -9999px; - - &.s22 { - width:22px; height: 22px; - padding: 1px; - .icons(22); - } - -} - - - -/* header */ -header { - position: fixed; left: 43%; right: 43%; top: 0px; - margin: 0px; padding: 0px; - /*width: 100%; height: 12px; */ - z-index: 110; - color: @Grey1; - #site-location { - /*font-size:8px; - float:left; - background-color: @Metalic3; - padding: 1px 5px; - margin-left: 20px; - .roundbottom()*/ - display: none; - } - - #banner { - - text-align: center; - width: 100%; - a, a:active, a:visited, a:link, a:hover { color: @Grey1; text-decoration: none; outline: none; vertical-align: bottom; } - #logo-img { height: 22px; margin-top:5px;} - #logo-text { font-size: 22px } - } -} -/* nav */ -nav { - width: 100%; height: 32px; - position: fixed; left: 0px; top: 0px; - padding: 0px; - background-color: @Metalic4; - color: @Grey1; - z-index: 100; - .shadow(0px, 0px); - - a, a:active, a:visited, a:link, a:hover { color: @Grey1; text-decoration: none; outline: none; } - - ul { - margin: 0px; - padding: 0px 20px; - li { - list-style: none; - margin: 0px; padding: 0px; - float: left; - .menu-popup{ left: 0px; right: auto; } - } - - } - - .nav-menu-icon { - position: relative; - height: 22px; - padding: 5px; - margin: 0px 10px; - .roundtop(); - - &.selected { - background-color: @Metalic3; - } - - img { width: 22px; height: 22px; } - .nav-notify { top: 3px; } - } - - .nav-menu { - position: relative; - height: 16px; - padding: 5px; - margin: 3px 15px 0px; - font-size: 14px; - border-bottom: 3px solid @Metalic4; - &.selected { - border-bottom: 3px solid @Metalic2; - } - - } - - .nav-notify { - display: none; - position: absolute; - background-color: @Blue1; - .rounded(); - font-size: 10px; - padding: 1px 3px; - top: 0px; - right: -10px; - min-width: 15px; - text-align: right; - - &.show{ display: block; } - } - - - #nav-help-link, - #nav-search-link, - #nav-directory-link, - #nav-apps-link, - #nav-site-linkmenu { - float: right; - .menu-popup{ right: 0px; left: auto; } - } - - #nav-notifications-linkmenu.selected .icon.s22.notify { background-image: url("../../../images/icons/notify_on_22.png") } - -} - -ul.menu-popup { - position: absolute; - display: none; - width: 10em; - background: @Grey1; - color: @Grey5; - margin: 0px; - padding: 0px; - list-style: none; - border: 3px solid @Metalic3; - z-index: 100000; - - .shadow(); - - a { display: block; color: @Grey5; padding: 5px 10px;} - a:hover { background-color: @Metalic1; } - .menu-sep { border-top: 1px solid @Metalic2; } - li { float: none; overflow: auto; height: auto; display: block; } - - .empty { - padding: 5px; - text-align: center; - color: @Metalic2; - } -} - -#nav-notifications-menu { - width: 400px; - img { float: left; margin-right: 5px; } - .contactname { font-weight: bold; } - .notif-when { font-size: 10px; color: @Metalic2; display: block; } -} - - - - -/* aside */ -aside { - display: table-cell; - width: 200px; - padding:50px 10px 0px 20px; -} - -/* section */ -section { - display: table-cell; - width: 800px; - padding:50px 20px 0px 10px; -} -- cgit v1.2.3 From 54f0685a038d87706ec4ecc15edc55ee171b6079 Mon Sep 17 00:00:00 2001 From: Fabio Comuni Date: Wed, 31 Aug 2011 17:30:48 +0200 Subject: quattro: more colors --- view/theme/quattro/colors.less | 10 ++++++++++ view/theme/quattro/quattro.less | 19 ++++++++++--------- view/theme/quattro/style.css | 9 +++++---- 3 files changed, 25 insertions(+), 13 deletions(-) diff --git a/view/theme/quattro/colors.less b/view/theme/quattro/colors.less index 75a53a68a..d79dbca68 100644 --- a/view/theme/quattro/colors.less +++ b/view/theme/quattro/colors.less @@ -44,7 +44,17 @@ @NavbarSelectedBg:@Metalic3; @NavbarSelectedBorder: @Metalic2; @NavbarNotifBg: @Blue1; + @Menu: @Grey5; @MenuBg: @Grey1; @MenuBorder: @Metalic3; +@MenuItem: @Grey5; +@MenuItemHoverBg: @Metalic1; +@MenuItemSeparator: @Metalic2; +@MenuEmpty: @Metalic2; +@MenuItemDetail: @Metalic2; + +@AsideBorder: @Metalic1; + + diff --git a/view/theme/quattro/quattro.less b/view/theme/quattro/quattro.less index 4c4a002f3..f83cce3ce 100644 --- a/view/theme/quattro/quattro.less +++ b/view/theme/quattro/quattro.less @@ -6,8 +6,8 @@ body { font-size: 12px; background-color: @BodyBackground; color: @BodyColor; - margin: 0px; - display:table-row; + margin: 50px 0px 0px 0px; + display:table; } .shadow(@x: 0px, @y: 5px){ @@ -175,15 +175,15 @@ ul.menu-popup { .shadow(); - a { display: block; color: @Grey5; padding: 5px 10px;} - a:hover { background-color: @Metalic1; } - .menu-sep { border-top: 1px solid @Metalic2; } + a { display: block; color: @MenuItem; padding: 5px 10px;} + a:hover { background-color: @MenuItemHoverBg; } + .menu-sep { border-top: 1px solid @MenuItemSeparator; } li { float: none; overflow: auto; height: auto; display: block; } .empty { padding: 5px; text-align: center; - color: @Metalic2; + color: @MenuEmpty; } } @@ -191,7 +191,7 @@ ul.menu-popup { width: 400px; img { float: left; margin-right: 5px; } .contactname { font-weight: bold; } - .notif-when { font-size: 10px; color: @Metalic2; display: block; } + .notif-when { font-size: 10px; color: @MenuItemDetail; display: block; } } @@ -201,12 +201,13 @@ ul.menu-popup { aside { display: table-cell; width: 200px; - padding:50px 10px 0px 20px; + padding:0px 10px 0px 20px; + border-right: 1px solid @AsideBorder; } /* section */ section { display: table-cell; width: 800px; - padding:50px 20px 0px 10px; + padding:0px 20px 0px 10px; } diff --git a/view/theme/quattro/style.css b/view/theme/quattro/style.css index e2c06125b..e0d22a007 100644 --- a/view/theme/quattro/style.css +++ b/view/theme/quattro/style.css @@ -7,8 +7,8 @@ body { font-size: 12px; background-color: #ffffff; color: #2d2d2d; - margin: 0px; - display: table-row; + margin: 50px 0px 0px 0px; + display: table; } a, a:link { color: #005c94; @@ -247,11 +247,12 @@ ul.menu-popup .empty { aside { display: table-cell; width: 200px; - padding: 50px 10px 0px 20px; + padding: 0px 10px 0px 20px; + border-right: 1px solid #bdcdd4; } /* section */ section { display: table-cell; width: 800px; - padding: 50px 20px 0px 10px; + padding: 0px 20px 0px 10px; } -- cgit v1.2.3 From 8b615133d528eb074a23746afef6201f474a4e3f Mon Sep 17 00:00:00 2001 From: Fabio Comuni Date: Wed, 31 Aug 2011 17:31:44 +0200 Subject: remove html from profile vcard code --- boot.php | 122 ++++++++++++------------------------------------ include/text.php | 36 ++++++++------ view/contact_block.tpl | 9 ++++ view/diaspora_vcard.tpl | 44 +++++++++++++++++ view/profile_vcard.tpl | 40 ++++++++++------ 5 files changed, 131 insertions(+), 120 deletions(-) create mode 100644 view/contact_block.tpl create mode 100644 view/diaspora_vcard.tpl diff --git a/boot.php b/boot.php index 42a0f7207..edad6e70f 100644 --- a/boot.php +++ b/boot.php @@ -808,8 +808,8 @@ function profile_load(&$a, $nickname, $profile = 0) { $a->page['aside'] .= profile_sidebar($a->profile, $block); - if(! $block) - $a->page['aside'] .= contact_block(); + /*if(! $block) + $a->page['aside'] .= contact_block();*/ return; }} @@ -837,132 +837,68 @@ function profile_sidebar($profile, $block = 0) { $a = get_app(); $o = ''; - $location = ''; + $location = false; $address = false; + $pdesc = true; if((! is_array($profile)) && (! count($profile))) return $o; call_hooks('profile_sidebar_enter', $profile); - $fullname = '
    ' . $profile['name'] . '
    '; - - $pdesc = '
    ' . $profile['pdesc'] . '
    '; - - $tabs = ''; - - $photo = '
    ' . $profile['name'] . '
    '; - + // don't show connect link to yourself - $connect = (($profile['uid'] != local_user()) ? '
  • ' . t('Connect') . '
  • ' : ''); + $connect = (($profile['uid'] != local_user()) ? t('Connect') : False); // don't show connect link to authenticated visitors either if((remote_user()) && ($_SESSION['visitor_visiting'] == $profile['uid'])) - $connect = ''; + $connect = False; + if((x($profile,'address') == 1) || (x($profile,'locality') == 1) || (x($profile,'region') == 1) || (x($profile,'postal-code') == 1) || (x($profile,'country-name') == 1)) - $address = true; - - if($address) { - $location .= '
    ' . t('Location:') . '
    '; - $location .= ((x($profile,'address') == 1) ? '
    ' . $profile['address'] . '
    ' : ''); - $location .= (((x($profile,'locality') == 1) || (x($profile,'region') == 1) || (x($profile,'postal-code') == 1)) - ? '' . $profile['locality'] . '' - . ((x($profile['locality']) == 1) ? t(', ') : '') - . '' . $profile['region'] . '' - . ' ' . $profile['postal-code'] . '' : ''); - $location .= ((x($profile,'country-name') == 1) ? ' ' . $profile['country-name'] . '' : ''); - $location .= '
    '; + $location = t('Location:'); - } - - - $gender = ((x($profile,'gender') == 1) ? '
    ' . t('Gender:') . ' ' . $profile['gender'] . '
    ' : ''); + $gender = ((x($profile,'gender') == 1) ? t('Gender:') : False); - $pubkey = ((x($profile,'pubkey') == 1) ? '' : ''); - $marital = ((x($profile,'marital') == 1) ? '
    ' . t('Status:') . ' ' . $profile['marital'] . '
    ' : ''); + $marital = ((x($profile,'marital') == 1) ? t('Status:') : False); - $homepage = ((x($profile,'homepage') == 1) ? '
    ' . t('Homepage:') . ' ' . linkify($profile['homepage']) . '
    ' : ''); + $homepage = ((x($profile,'homepage') == 1) ? t('Homepage:') : False); if(($profile['hidewall'] || $block) && (! local_user()) && (! remote_user())) { - $location = $pdesc = $connect = $gender = $marital = $homepage = ''; + $location = $pdesc = $connect = $gender = $marital = $homepage = False; } - $podloc = $a->get_baseurl(); - $searchable = (($profile['publish'] && $profile['net-publish']) ? 'true' : 'false' ); - $nickname = $profile['nickname']; - $photo300 = $a->get_baseurl() . '/photo/custom/300/' . $profile['uid'] . '.jpg'; - $photo100 = $a->get_baseurl() . '/photo/custom/100/' . $profile['uid'] . '.jpg'; - $photo50 = $a->get_baseurl() . '/photo/custom/50/' . $profile['uid'] . '.jpg'; - - $diaspora_vcard = <<< EOT - -
    -
    -
    Nickname
    -
    -$nickname -
    -
    -
    -
    Full name
    -
    -$fullname -
    -
    -
    -
    URL
    -
    -$podloc/ -
    -
    -
    -
    Photo
    -
    - -
    -
    -
    -
    Photo
    -
    - -
    -
    -
    -
    Photo
    -
    - -
    -
    -
    -
    Searchable
    -
    -$searchable -
    -
    -
    -EOT; + $diaspora = array( + 'podloc' => $a->get_baseurl(), + 'searchable' => (($profile['publish'] && $profile['net-publish']) ? 'true' : 'false' ), + 'nickname ' => $profile['nickname'], + 'photo300 ' => $a->get_baseurl() . '/photo/custom/300/' . $profile['uid'] . '.jpg', + 'photo100 ' => $a->get_baseurl() . '/photo/custom/100/' . $profile['uid'] . '.jpg', + 'photo50 ' => $a->get_baseurl() . '/photo/custom/50/' . $profile['uid'] . '.jpg', + ); + + if (!$block){ + $contact_block = contact_block(); + } $tpl = get_markup_template('profile_vcard.tpl'); $o .= replace_macros($tpl, array( - '$fullname' => $fullname, - '$pdesc' => $pdesc, - '$tabs' => $tabs, - '$photo' => $photo, + '$profile' => $profile, '$connect' => $connect, '$location' => $location, '$gender' => $gender, - '$pubkey' => $pubkey, + '$pdesc' => $pdesc, '$marital' => $marital, '$homepage' => $homepage, - '$diaspora' => $diaspora_vcard + '$diaspora' => $diaspora, + '$contact_block' => $contact_block, )); diff --git a/include/text.php b/include/text.php index 66447069e..075caee00 100644 --- a/include/text.php +++ b/include/text.php @@ -539,22 +539,30 @@ function contact_block() { $total = intval($r[0]['total']); } if(! $total) { - $o .= '

    ' . t('No contacts') . '

    '; - return $o; - } - $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `self` = 0 AND `blocked` = 0 and `pending` = 0 ORDER BY RAND() LIMIT %d", - intval($a->profile['uid']), - intval($shown) - ); - if(count($r)) { - $o .= '

    ' . sprintf( tt('%d Contact','%d Contacts', $total),$total) . '

    '; - foreach($r as $rr) { - $o .= micropro($rr,true,'mpfriend'); - } - $o .= '
    '; - $o .= ''; + $contacts = t('No contacts'); + $micropro = Null; + } else { + $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `self` = 0 AND `blocked` = 0 and `pending` = 0 ORDER BY RAND() LIMIT %d", + intval($a->profile['uid']), + intval($shown) + ); + if(count($r)) { + $contacts = sprintf( tt('%d Contact','%d Contacts', $total),$total); + $micropro = Array(); + foreach($r as $rr) { + $micropro[] = micropro($rr,true,'mpfriend'); + } + } } + + $tpl = get_markup_template('contact_block.tpl'); + $o = replace_macros($tpl, array( + '$contacts' => $contacts, + '$nickname' => $a->profile['nickname'], + '$viewcontacts' => t('View Contacts'), + '$micropro' => $micropro, + )); $arr = array('contacts' => $r, 'output' => $o); diff --git a/view/contact_block.tpl b/view/contact_block.tpl new file mode 100644 index 000000000..00b97a6d8 --- /dev/null +++ b/view/contact_block.tpl @@ -0,0 +1,9 @@ +

    $contacts

    +{{ if $micropro }} +
    + {{ for $micropro as $m }} + $m + {{ endfor }} +
    + +{{ endif }} diff --git a/view/diaspora_vcard.tpl b/view/diaspora_vcard.tpl new file mode 100644 index 000000000..aa2c9eded --- /dev/null +++ b/view/diaspora_vcard.tpl @@ -0,0 +1,44 @@ +
    +
    +
    Nickname
    +
    + $diaspora.nickname +
    +
    +
    +
    Full name
    +
    + $diaspora.fullname +
    +
    +
    +
    URL
    +
    + $diaspora.podloc/ +
    +
    +
    +
    Photo
    +
    + +
    +
    +
    +
    Photo
    +
    + +
    +
    +
    +
    Photo
    +
    + +
    +
    +
    +
    Searchable
    +
    + $diaspora.searchable +
    +
    +
    diff --git a/view/profile_vcard.tpl b/view/profile_vcard.tpl index 34f265ee6..01238ed5a 100644 --- a/view/profile_vcard.tpl +++ b/view/profile_vcard.tpl @@ -1,29 +1,43 @@
    - $fullname - $pdesc - $tabs - - $photo +
    $profile.name
    + {{ if $pdesc }}
    $profile.pdesc
    {{ endif }} +
    $profile.name
    - $location + {{ if $location }} +
    $location +
    + {{ if $profile.address }}
    $profile.address
    {{ endif }} + + $profile.locality{{ if $profile.locality }}, {{ endif }} + $profile.region + $profile.postal-code + + {{ if $profile.country-name }}$profile.country-name{{ endif }} +
    + + {{ endif }} - $gender + {{ if $gender }}
    $gender $profile.gender
    {{ endif }} + + {{ if $profile.pubkey }}{{ endif }} - $pubkey + {{ if $marital }}
    $marital$profile.marital
    {{ endif }} -$diaspora + {{ if $homepage }}{{ endif }} -
    + {{ inc diaspora_vcard.tpl }}{{ endinc }} -$marital +
    -$homepage +$contact_block -- cgit v1.2.3 From 058e329dfbc2678fa7e3cb2ce130fb9ffd69b84d Mon Sep 17 00:00:00 2001 From: Fabio Comuni Date: Thu, 1 Sep 2011 12:37:30 +0200 Subject: Fix profile vcard and style --- boot.php | 1 + images/connect-bg.png | Bin 0 -> 689 bytes view/profile_vcard.tpl | 31 ++++++++++++++------------- view/theme/quattro/colors.less | 3 +++ view/theme/quattro/quattro.less | 30 ++++++++++++++++++++++++++ view/theme/quattro/style.css | 46 ++++++++++++++++++++++++++++++++++++++++ 6 files changed, 96 insertions(+), 15 deletions(-) create mode 100644 images/connect-bg.png diff --git a/boot.php b/boot.php index edad6e70f..73cfe6e06 100644 --- a/boot.php +++ b/boot.php @@ -878,6 +878,7 @@ function profile_sidebar($profile, $block = 0) { 'podloc' => $a->get_baseurl(), 'searchable' => (($profile['publish'] && $profile['net-publish']) ? 'true' : 'false' ), 'nickname ' => $profile['nickname'], + 'fullname' => $profile['name'], 'photo300 ' => $a->get_baseurl() . '/photo/custom/300/' . $profile['uid'] . '.jpg', 'photo100 ' => $a->get_baseurl() . '/photo/custom/100/' . $profile['uid'] . '.jpg', 'photo50 ' => $a->get_baseurl() . '/photo/custom/50/' . $profile['uid'] . '.jpg', diff --git a/images/connect-bg.png b/images/connect-bg.png new file mode 100644 index 000000000..0611c73e5 Binary files /dev/null and b/images/connect-bg.png differ diff --git a/view/profile_vcard.tpl b/view/profile_vcard.tpl index 01238ed5a..88111b0f1 100644 --- a/view/profile_vcard.tpl +++ b/view/profile_vcard.tpl @@ -4,17 +4,11 @@ {{ if $pdesc }}
    $profile.pdesc
    {{ endif }}
    $profile.name
    - + {{ if $location }} -
    $location -
    +
    $location
    +
    {{ if $profile.address }}
    $profile.address
    {{ endif }} $profile.locality{{ if $profile.locality }}, {{ endif }} @@ -22,20 +16,27 @@ $profile.postal-code {{ if $profile.country-name }}$profile.country-name{{ endif }} -
    - + + {{ endif }} - {{ if $gender }}
    $gender $profile.gender
    {{ endif }} + {{ if $gender }}
    $gender
    $profile.gender
    {{ endif }} {{ if $profile.pubkey }}{{ endif }} - {{ if $marital }}
    $marital$profile.marital
    {{ endif }} + {{ if $marital }}
    $marital
    $profile.marital
    {{ endif }} - {{ if $homepage }}{{ endif }} + {{ if $homepage }}
    $homepage
    $profile.homepage
    {{ endif }} {{ inc diaspora_vcard.tpl }}{{ endinc }} - + +
    $contact_block diff --git a/view/theme/quattro/colors.less b/view/theme/quattro/colors.less index d79dbca68..6015c61ee 100644 --- a/view/theme/quattro/colors.less +++ b/view/theme/quattro/colors.less @@ -55,6 +55,9 @@ @MenuItemDetail: @Metalic2; @AsideBorder: @Metalic1; +@AsideConnect: @Grey1; +@AsideConnectBg: @Blue3; +@AsideConnectHoverBg: @Blue1; diff --git a/view/theme/quattro/quattro.less b/view/theme/quattro/quattro.less index f83cce3ce..d21c3c182 100644 --- a/view/theme/quattro/quattro.less +++ b/view/theme/quattro/quattro.less @@ -203,8 +203,38 @@ aside { width: 200px; padding:0px 10px 0px 20px; border-right: 1px solid @AsideBorder; + + .vcard { + .fn { font-size: 16px; font-weight: bold; margin-bottom: 5px; } + .title { margin-bottom: 5px; } + dl { height: auto; overflow: auto; } + dt {float: left; margin-left: 0px; width: 35%; } + dd {float: left; margin-left: 4px; width: 60%;} + + } + + #profile-extra-links { + ul { padding: 0px; margin: 0px; } + li { padding: 0px; margin: 0px; list-style: none; } + } + + #dfrn-request-link { + display: block; + .rounded(); + color: @AsideConnect; + background: @AsideConnectBg url('../../../images/connect-bg.png') no-repeat left center; + font-weight: bold; + text-transform:uppercase; + padding: 4px 2px 2px 35px; + + &:hover { text-decoration: none; background-color: @AsideConnectHoverBg; } + } + } + + + /* section */ section { display: table-cell; diff --git a/view/theme/quattro/style.css b/view/theme/quattro/style.css index e0d22a007..28e6f5fa1 100644 --- a/view/theme/quattro/style.css +++ b/view/theme/quattro/style.css @@ -250,6 +250,52 @@ aside { padding: 0px 10px 0px 20px; border-right: 1px solid #bdcdd4; } +aside .vcard .fn { + font-size: 16px; + font-weight: bold; + margin-bottom: 5px; +} +aside .vcard .title { + margin-bottom: 5px; +} +aside .vcard dl { + height: auto; + overflow: auto; +} +aside .vcard dt { + float: left; + margin-left: 0px; + width: 35%; +} +aside .vcard dd { + float: left; + margin-left: 4px; + width: 60%; +} +aside #profile-extra-links ul { + padding: 0px; + margin: 0px; +} +aside #profile-extra-links li { + padding: 0px; + margin: 0px; + list-style: none; +} +aside #dfrn-request-link { + display: block; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; + color: #ffffff; + background: #005c94 url('../../../images/connect-bg.png') no-repeat left center; + font-weight: bold; + text-transform: uppercase; + padding: 4px 2px 2px 35px; +} +aside #dfrn-request-link:hover { + text-decoration: none; + background-color: #19aeff; +} /* section */ section { display: table-cell; -- cgit v1.2.3 From c308ac49afa43131cb09558c9c1ebdb581167a46 Mon Sep 17 00:00:00 2001 From: Fabio Comuni Date: Mon, 5 Sep 2011 11:13:42 +0200 Subject: More icons --- images/icons/10/add.png | Bin 0 -> 2946 bytes images/icons/10/delete.png | Bin 0 -> 3018 bytes images/icons/10/edit.png | Bin 0 -> 3011 bytes images/icons/10/feed.png | Bin 0 -> 535 bytes images/icons/10/gear.png | Bin 0 -> 3043 bytes images/icons/10/group.png | Bin 0 -> 543 bytes images/icons/10/notify_off.png | Bin 0 -> 478 bytes images/icons/10/notify_on.png | Bin 0 -> 369 bytes images/icons/10/star.png | Bin 0 -> 3229 bytes images/icons/10/user.png | Bin 0 -> 534 bytes images/icons/16/add.png | Bin 0 -> 3068 bytes images/icons/16/delete.png | Bin 0 -> 3142 bytes images/icons/16/edit.png | Bin 0 -> 3129 bytes images/icons/16/feed.png | Bin 0 -> 828 bytes images/icons/16/gear.png | Bin 0 -> 3199 bytes images/icons/16/group.png | Bin 0 -> 852 bytes images/icons/16/notify_off.png | Bin 0 -> 835 bytes images/icons/16/notify_on.png | Bin 0 -> 542 bytes images/icons/16/star.png | Bin 0 -> 3498 bytes images/icons/16/user.png | Bin 0 -> 794 bytes images/icons/22/add.png | Bin 0 -> 3210 bytes images/icons/22/delete.png | Bin 0 -> 3294 bytes images/icons/22/edit.png | Bin 0 -> 3247 bytes images/icons/22/feed.png | Bin 0 -> 1136 bytes images/icons/22/gear.png | Bin 0 -> 3384 bytes images/icons/22/group.png | Bin 0 -> 1146 bytes images/icons/22/notify_off.png | Bin 0 -> 1093 bytes images/icons/22/notify_on.png | Bin 0 -> 721 bytes images/icons/22/star.png | Bin 0 -> 3780 bytes images/icons/22/user.png | Bin 0 -> 1084 bytes images/icons/48/add.png | Bin 0 -> 3944 bytes images/icons/48/delete.png | Bin 0 -> 3997 bytes images/icons/48/edit.png | Bin 0 -> 3948 bytes images/icons/48/feed.png | Bin 0 -> 2692 bytes images/icons/48/gear.png | Bin 0 -> 4225 bytes images/icons/48/group.png | Bin 0 -> 2392 bytes images/icons/48/notify_off.png | Bin 0 -> 2147 bytes images/icons/48/notify_on.png | Bin 0 -> 1506 bytes images/icons/48/star.png | Bin 0 -> 4776 bytes images/icons/48/user.png | Bin 0 -> 2269 bytes images/icons/add.png | Bin 0 -> 8685 bytes images/icons/delete.png | Bin 0 -> 7905 bytes images/icons/edit.png | Bin 0 -> 8297 bytes images/icons/feed.png | Bin 0 -> 9007 bytes images/icons/gear.png | Bin 0 -> 10744 bytes images/icons/gear_22.png | Bin 886 -> 0 bytes images/icons/group.png | Bin 0 -> 7268 bytes images/icons/make.sh | 14 ++++++++++++++ images/icons/notify_off.png | Bin 0 -> 4340 bytes images/icons/notify_off_22.png | Bin 884 -> 0 bytes images/icons/notify_on.png | Bin 0 -> 3671 bytes images/icons/notify_on_22.png | Bin 561 -> 0 bytes images/icons/star.png | Bin 0 -> 9307 bytes images/icons/user.png | Bin 0 -> 6921 bytes 54 files changed, 14 insertions(+) create mode 100644 images/icons/10/add.png create mode 100644 images/icons/10/delete.png create mode 100644 images/icons/10/edit.png create mode 100644 images/icons/10/feed.png create mode 100644 images/icons/10/gear.png create mode 100644 images/icons/10/group.png create mode 100644 images/icons/10/notify_off.png create mode 100644 images/icons/10/notify_on.png create mode 100644 images/icons/10/star.png create mode 100644 images/icons/10/user.png create mode 100644 images/icons/16/add.png create mode 100644 images/icons/16/delete.png create mode 100644 images/icons/16/edit.png create mode 100644 images/icons/16/feed.png create mode 100644 images/icons/16/gear.png create mode 100644 images/icons/16/group.png create mode 100644 images/icons/16/notify_off.png create mode 100644 images/icons/16/notify_on.png create mode 100644 images/icons/16/star.png create mode 100644 images/icons/16/user.png create mode 100644 images/icons/22/add.png create mode 100644 images/icons/22/delete.png create mode 100644 images/icons/22/edit.png create mode 100644 images/icons/22/feed.png create mode 100644 images/icons/22/gear.png create mode 100644 images/icons/22/group.png create mode 100644 images/icons/22/notify_off.png create mode 100644 images/icons/22/notify_on.png create mode 100644 images/icons/22/star.png create mode 100644 images/icons/22/user.png create mode 100644 images/icons/48/add.png create mode 100644 images/icons/48/delete.png create mode 100644 images/icons/48/edit.png create mode 100644 images/icons/48/feed.png create mode 100644 images/icons/48/gear.png create mode 100644 images/icons/48/group.png create mode 100644 images/icons/48/notify_off.png create mode 100644 images/icons/48/notify_on.png create mode 100644 images/icons/48/star.png create mode 100644 images/icons/48/user.png create mode 100644 images/icons/add.png create mode 100644 images/icons/delete.png create mode 100644 images/icons/edit.png create mode 100644 images/icons/feed.png create mode 100644 images/icons/gear.png delete mode 100644 images/icons/gear_22.png create mode 100644 images/icons/group.png create mode 100644 images/icons/make.sh create mode 100644 images/icons/notify_off.png delete mode 100644 images/icons/notify_off_22.png create mode 100644 images/icons/notify_on.png delete mode 100644 images/icons/notify_on_22.png create mode 100644 images/icons/star.png create mode 100644 images/icons/user.png diff --git a/images/icons/10/add.png b/images/icons/10/add.png new file mode 100644 index 000000000..f036ac73e Binary files /dev/null and b/images/icons/10/add.png differ diff --git a/images/icons/10/delete.png b/images/icons/10/delete.png new file mode 100644 index 000000000..f6bf31da4 Binary files /dev/null and b/images/icons/10/delete.png differ diff --git a/images/icons/10/edit.png b/images/icons/10/edit.png new file mode 100644 index 000000000..a6af619e2 Binary files /dev/null and b/images/icons/10/edit.png differ diff --git a/images/icons/10/feed.png b/images/icons/10/feed.png new file mode 100644 index 000000000..0e7d02c9b Binary files /dev/null and b/images/icons/10/feed.png differ diff --git a/images/icons/10/gear.png b/images/icons/10/gear.png new file mode 100644 index 000000000..df6f87af5 Binary files /dev/null and b/images/icons/10/gear.png differ diff --git a/images/icons/10/group.png b/images/icons/10/group.png new file mode 100644 index 000000000..23172a027 Binary files /dev/null and b/images/icons/10/group.png differ diff --git a/images/icons/10/notify_off.png b/images/icons/10/notify_off.png new file mode 100644 index 000000000..c499de01b Binary files /dev/null and b/images/icons/10/notify_off.png differ diff --git a/images/icons/10/notify_on.png b/images/icons/10/notify_on.png new file mode 100644 index 000000000..5204e097c Binary files /dev/null and b/images/icons/10/notify_on.png differ diff --git a/images/icons/10/star.png b/images/icons/10/star.png new file mode 100644 index 000000000..185761177 Binary files /dev/null and b/images/icons/10/star.png differ diff --git a/images/icons/10/user.png b/images/icons/10/user.png new file mode 100644 index 000000000..419661be6 Binary files /dev/null and b/images/icons/10/user.png differ diff --git a/images/icons/16/add.png b/images/icons/16/add.png new file mode 100644 index 000000000..7ca375325 Binary files /dev/null and b/images/icons/16/add.png differ diff --git a/images/icons/16/delete.png b/images/icons/16/delete.png new file mode 100644 index 000000000..ada2535fc Binary files /dev/null and b/images/icons/16/delete.png differ diff --git a/images/icons/16/edit.png b/images/icons/16/edit.png new file mode 100644 index 000000000..747f5e4e7 Binary files /dev/null and b/images/icons/16/edit.png differ diff --git a/images/icons/16/feed.png b/images/icons/16/feed.png new file mode 100644 index 000000000..9ac7c6677 Binary files /dev/null and b/images/icons/16/feed.png differ diff --git a/images/icons/16/gear.png b/images/icons/16/gear.png new file mode 100644 index 000000000..5af85390f Binary files /dev/null and b/images/icons/16/gear.png differ diff --git a/images/icons/16/group.png b/images/icons/16/group.png new file mode 100644 index 000000000..bab4bcd18 Binary files /dev/null and b/images/icons/16/group.png differ diff --git a/images/icons/16/notify_off.png b/images/icons/16/notify_off.png new file mode 100644 index 000000000..f11aa4bde Binary files /dev/null and b/images/icons/16/notify_off.png differ diff --git a/images/icons/16/notify_on.png b/images/icons/16/notify_on.png new file mode 100644 index 000000000..6e91fd995 Binary files /dev/null and b/images/icons/16/notify_on.png differ diff --git a/images/icons/16/star.png b/images/icons/16/star.png new file mode 100644 index 000000000..3130be6f0 Binary files /dev/null and b/images/icons/16/star.png differ diff --git a/images/icons/16/user.png b/images/icons/16/user.png new file mode 100644 index 000000000..df83bc27d Binary files /dev/null and b/images/icons/16/user.png differ diff --git a/images/icons/22/add.png b/images/icons/22/add.png new file mode 100644 index 000000000..ee83da024 Binary files /dev/null and b/images/icons/22/add.png differ diff --git a/images/icons/22/delete.png b/images/icons/22/delete.png new file mode 100644 index 000000000..15713471b Binary files /dev/null and b/images/icons/22/delete.png differ diff --git a/images/icons/22/edit.png b/images/icons/22/edit.png new file mode 100644 index 000000000..6e6bb4f73 Binary files /dev/null and b/images/icons/22/edit.png differ diff --git a/images/icons/22/feed.png b/images/icons/22/feed.png new file mode 100644 index 000000000..15094ce89 Binary files /dev/null and b/images/icons/22/feed.png differ diff --git a/images/icons/22/gear.png b/images/icons/22/gear.png new file mode 100644 index 000000000..16bcf77dd Binary files /dev/null and b/images/icons/22/gear.png differ diff --git a/images/icons/22/group.png b/images/icons/22/group.png new file mode 100644 index 000000000..0505432ca Binary files /dev/null and b/images/icons/22/group.png differ diff --git a/images/icons/22/notify_off.png b/images/icons/22/notify_off.png new file mode 100644 index 000000000..f2200bb60 Binary files /dev/null and b/images/icons/22/notify_off.png differ diff --git a/images/icons/22/notify_on.png b/images/icons/22/notify_on.png new file mode 100644 index 000000000..6b3d7fd08 Binary files /dev/null and b/images/icons/22/notify_on.png differ diff --git a/images/icons/22/star.png b/images/icons/22/star.png new file mode 100644 index 000000000..b8829cbfd Binary files /dev/null and b/images/icons/22/star.png differ diff --git a/images/icons/22/user.png b/images/icons/22/user.png new file mode 100644 index 000000000..fad2bee97 Binary files /dev/null and b/images/icons/22/user.png differ diff --git a/images/icons/48/add.png b/images/icons/48/add.png new file mode 100644 index 000000000..61a0b0982 Binary files /dev/null and b/images/icons/48/add.png differ diff --git a/images/icons/48/delete.png b/images/icons/48/delete.png new file mode 100644 index 000000000..1be4c9a21 Binary files /dev/null and b/images/icons/48/delete.png differ diff --git a/images/icons/48/edit.png b/images/icons/48/edit.png new file mode 100644 index 000000000..d09214ec9 Binary files /dev/null and b/images/icons/48/edit.png differ diff --git a/images/icons/48/feed.png b/images/icons/48/feed.png new file mode 100644 index 000000000..9730b4738 Binary files /dev/null and b/images/icons/48/feed.png differ diff --git a/images/icons/48/gear.png b/images/icons/48/gear.png new file mode 100644 index 000000000..16434390d Binary files /dev/null and b/images/icons/48/gear.png differ diff --git a/images/icons/48/group.png b/images/icons/48/group.png new file mode 100644 index 000000000..e624bbfb2 Binary files /dev/null and b/images/icons/48/group.png differ diff --git a/images/icons/48/notify_off.png b/images/icons/48/notify_off.png new file mode 100644 index 000000000..0a8854cfe Binary files /dev/null and b/images/icons/48/notify_off.png differ diff --git a/images/icons/48/notify_on.png b/images/icons/48/notify_on.png new file mode 100644 index 000000000..8440018a6 Binary files /dev/null and b/images/icons/48/notify_on.png differ diff --git a/images/icons/48/star.png b/images/icons/48/star.png new file mode 100644 index 000000000..4b2816d15 Binary files /dev/null and b/images/icons/48/star.png differ diff --git a/images/icons/48/user.png b/images/icons/48/user.png new file mode 100644 index 000000000..f73c591e6 Binary files /dev/null and b/images/icons/48/user.png differ diff --git a/images/icons/add.png b/images/icons/add.png new file mode 100644 index 000000000..78497fbc9 Binary files /dev/null and b/images/icons/add.png differ diff --git a/images/icons/delete.png b/images/icons/delete.png new file mode 100644 index 000000000..f0cae5154 Binary files /dev/null and b/images/icons/delete.png differ diff --git a/images/icons/edit.png b/images/icons/edit.png new file mode 100644 index 000000000..aeaf835fe Binary files /dev/null and b/images/icons/edit.png differ diff --git a/images/icons/feed.png b/images/icons/feed.png new file mode 100644 index 000000000..6894257e9 Binary files /dev/null and b/images/icons/feed.png differ diff --git a/images/icons/gear.png b/images/icons/gear.png new file mode 100644 index 000000000..02847ef9d Binary files /dev/null and b/images/icons/gear.png differ diff --git a/images/icons/gear_22.png b/images/icons/gear_22.png deleted file mode 100644 index e363de00d..000000000 Binary files a/images/icons/gear_22.png and /dev/null differ diff --git a/images/icons/group.png b/images/icons/group.png new file mode 100644 index 000000000..de0dc7901 Binary files /dev/null and b/images/icons/group.png differ diff --git a/images/icons/make.sh b/images/icons/make.sh new file mode 100644 index 000000000..348117411 --- /dev/null +++ b/images/icons/make.sh @@ -0,0 +1,14 @@ +sizes="10 16 22 48" + +for s in $sizes +do + echo "=[ ${s}x${s} ]====" + [ -d $s ] || mkdir $s + for f in *.png + do + convert $f -resize ${s}x${s} $s/$f + echo -n "#" + done + echo +done +echo "Ok." diff --git a/images/icons/notify_off.png b/images/icons/notify_off.png new file mode 100644 index 000000000..e6eac16b8 Binary files /dev/null and b/images/icons/notify_off.png differ diff --git a/images/icons/notify_off_22.png b/images/icons/notify_off_22.png deleted file mode 100644 index 0520af327..000000000 Binary files a/images/icons/notify_off_22.png and /dev/null differ diff --git a/images/icons/notify_on.png b/images/icons/notify_on.png new file mode 100644 index 000000000..b9e07d24e Binary files /dev/null and b/images/icons/notify_on.png differ diff --git a/images/icons/notify_on_22.png b/images/icons/notify_on_22.png deleted file mode 100644 index a8b305245..000000000 Binary files a/images/icons/notify_on_22.png and /dev/null differ diff --git a/images/icons/star.png b/images/icons/star.png new file mode 100644 index 000000000..4a2236c9b Binary files /dev/null and b/images/icons/star.png differ diff --git a/images/icons/user.png b/images/icons/user.png new file mode 100644 index 000000000..f1132b1ae Binary files /dev/null and b/images/icons/user.png differ -- cgit v1.2.3 From ab5bda526e9fffcfeecd384332372531c18c49dc Mon Sep 17 00:00:00 2001 From: Fabio Comuni Date: Mon, 5 Sep 2011 11:14:43 +0200 Subject: move icons style in new file --- view/theme/quattro/icons.less | 37 ++++++++++++++ view/theme/quattro/quattro.less | 47 +++++++++--------- view/theme/quattro/style.css | 104 +++++++++++++++++++++++++++++++++------- view/theme/quattro/style.less | 1 + 4 files changed, 146 insertions(+), 43 deletions(-) create mode 100644 view/theme/quattro/icons.less diff --git a/view/theme/quattro/icons.less b/view/theme/quattro/icons.less new file mode 100644 index 000000000..8f7111aff --- /dev/null +++ b/view/theme/quattro/icons.less @@ -0,0 +1,37 @@ +/* icons */ + +.icons(@size: 22) { + &.notify { background-image: url("../../../images/icons/@{size}/notify_off.png"); } + &.gear { background-image: url("../../../images/icons/@{size}/gear.png"); } + + &.add { background-image: url("../../../images/icons/@{size}/add.png"); } + &.delete { background-image: url("../../../images/icons/@{size}/delete.png"); } + &.edit { background-image: url("../../../images/icons/@{size}/edit.png"); } + &.start { background-image: url("../../../images/icons/@{size}/star.png"); } +} + + +.icon { + background-color: transparent ; + background-repeat: no-repeat; + background-position: center center; + display: block; + overflow: hidden; + text-indent: -9999px; + padding: 1px; + + &.text { + text-indent: 0px; + } + + &.s16 { + width:22px; height: 22px; + .icons(16); + } + &.s22 { + width:22px; height: 22px; + .icons(22); + } + + +} diff --git a/view/theme/quattro/quattro.less b/view/theme/quattro/quattro.less index d21c3c182..c7cbe7ebb 100644 --- a/view/theme/quattro/quattro.less +++ b/view/theme/quattro/quattro.less @@ -32,33 +32,13 @@ a:hover {color: @LinkHover; text-decoration: underline; } .left { float: left; } .right { float: right; } -/* icons */ - - -.icons(@size: 22) { - &.notify { background-image: url("../../../images/icons/notify_off_@{size}.png"); } - &.gear { background-image: url("../../../images/icons/gear_@{size}.png"); } -} - - -.icon { - background-color: transparent ; - background-repeat: no-repeat; - background-position: center center; - display: block; - overflow: hidden; - text-indent: -9999px; - - &.s22 { - width:22px; height: 22px; - padding: 1px; - .icons(22); - } - +.tool { + height: auto; overflow: auto; + .label { float: left;} + .icon { float: right; } } - /* header */ header { position: fixed; left: 43%; right: 43%; top: 0px; @@ -156,7 +136,7 @@ nav { .menu-popup{ right: 0px; left: auto; } } - #nav-notifications-linkmenu.selected .icon.s22.notify { background-image: url("../../../images/icons/notify_on_22.png") } + #nav-notifications-linkmenu.selected .icon.s22.notify { background-image: url("../../../images/icons/22/notify_on.png") } #nav-apps-link.selected { background-color: @NavbarSelectedBg; } } @@ -232,6 +212,20 @@ aside { } +#contact-block { + overflow: auto; height: auto; + .contact-block-h4 { float: left; margin: 5px 0px; } + .allcontact-link { float: right; margin: 5px 0px; } + .contact-block-content { + clear: both; + overflow: auto; height: auto; + } + .contact-block-link { + float: left; + margin: 0px 2px 2px 0px; + } +} + @@ -241,3 +235,6 @@ section { width: 800px; padding:0px 20px 0px 10px; } + + + diff --git a/view/theme/quattro/style.css b/view/theme/quattro/style.css index 28e6f5fa1..2b950c3ef 100644 --- a/view/theme/quattro/style.css +++ b/view/theme/quattro/style.css @@ -1,6 +1,63 @@ /** * Fabio Comuni **/ +/* icons */ +.icon { + background-color: transparent ; + background-repeat: no-repeat; + background-position: center center; + display: block; + overflow: hidden; + text-indent: -9999px; + padding: 1px; +} +.icon.text { + text-indent: 0px; +} +.icon.s16 { + width: 22px; + height: 22px; +} +.icon.s16.notify { + background-image: url("../../../images/icons/16/notify_off.png"); +} +.icon.s16.gear { + background-image: url("../../../images/icons/16/gear.png"); +} +.icon.s16.add { + background-image: url("../../../images/icons/16/add.png"); +} +.icon.s16.delete { + background-image: url("../../../images/icons/16/delete.png"); +} +.icon.s16.edit { + background-image: url("../../../images/icons/16/edit.png"); +} +.icon.s16.start { + background-image: url("../../../images/icons/16/star.png"); +} +.icon.s22 { + width: 22px; + height: 22px; +} +.icon.s22.notify { + background-image: url("../../../images/icons/22/notify_off.png"); +} +.icon.s22.gear { + background-image: url("../../../images/icons/22/gear.png"); +} +.icon.s22.add { + background-image: url("../../../images/icons/22/add.png"); +} +.icon.s22.delete { + background-image: url("../../../images/icons/22/delete.png"); +} +.icon.s22.edit { + background-image: url("../../../images/icons/22/edit.png"); +} +.icon.s22.start { + background-image: url("../../../images/icons/22/star.png"); +} /* global */ body { font-family: Liberation Sans, helvetica, arial, clean, sans-serif; @@ -28,25 +85,15 @@ a:hover { .right { float: right; } -/* icons */ -.icon { - background-color: transparent ; - background-repeat: no-repeat; - background-position: center center; - display: block; - overflow: hidden; - text-indent: -9999px; -} -.icon.s22 { - width: 22px; - height: 22px; - padding: 1px; +.tool { + height: auto; + overflow: auto; } -.icon.s22.notify { - background-image: url("../../../images/icons/notify_off_22.png"); +.tool .label { + float: left; } -.icon.s22.gear { - background-image: url("../../../images/icons/gear_22.png"); +.tool .icon { + float: right; } /* header */ header { @@ -186,7 +233,7 @@ nav #nav-site-linkmenu .menu-popup { left: auto; } nav #nav-notifications-linkmenu.selected .icon.s22.notify { - background-image: url("../../../images/icons/notify_on_22.png"); + background-image: url("../../../images/icons/22/notify_on.png"); } nav #nav-apps-link.selected { background-color: #364e59; @@ -296,6 +343,27 @@ aside #dfrn-request-link:hover { text-decoration: none; background-color: #19aeff; } +#contact-block { + overflow: auto; + height: auto; +} +#contact-block .contact-block-h4 { + float: left; + margin: 5px 0px; +} +#contact-block .allcontact-link { + float: right; + margin: 5px 0px; +} +#contact-block .contact-block-content { + clear: both; + overflow: auto; + height: auto; +} +#contact-block .contact-block-link { + float: left; + margin: 0px 2px 2px 0px; +} /* section */ section { display: table-cell; diff --git a/view/theme/quattro/style.less b/view/theme/quattro/style.less index d1c677b22..c3dbae777 100644 --- a/view/theme/quattro/style.less +++ b/view/theme/quattro/style.less @@ -6,6 +6,7 @@ // $ lessc style.less > style.css @import "colors"; +@import "icons"; @import "quattro"; -- cgit v1.2.3 From 20ca4512000e80386fe6f9b3fd85864bc0e91627 Mon Sep 17 00:00:00 2001 From: Fabio Comuni Date: Mon, 5 Sep 2011 11:15:30 +0200 Subject: move js to js folder --- include/acl.js | 240 -------------- include/ajaxupload.js | 695 ---------------------------------------- include/country.js | 438 ------------------------- include/jquery.htmlstream.js | 157 --------- include/jquery.js | 154 --------- include/main.js | 426 ------------------------ js/acl.js | 240 ++++++++++++++ js/ajaxupload.js | 695 ++++++++++++++++++++++++++++++++++++++++ js/country.js | 438 +++++++++++++++++++++++++ js/jquery.htmlstream.js | 157 +++++++++ js/jquery.js | 154 +++++++++ js/main.js | 426 ++++++++++++++++++++++++ view/admin_remoteupdate.tpl | 2 +- view/head.tpl | 8 +- view/jot-header.tpl | 2 +- view/msg-header.tpl | 2 +- view/theme/dispy/jot-header.tpl | 2 +- 17 files changed, 2119 insertions(+), 2117 deletions(-) delete mode 100644 include/acl.js delete mode 100644 include/ajaxupload.js delete mode 100644 include/country.js delete mode 100644 include/jquery.htmlstream.js delete mode 100644 include/jquery.js delete mode 100644 include/main.js create mode 100644 js/acl.js create mode 100644 js/ajaxupload.js create mode 100644 js/country.js create mode 100644 js/jquery.htmlstream.js create mode 100644 js/jquery.js create mode 100644 js/main.js diff --git a/include/acl.js b/include/acl.js deleted file mode 100644 index 82b631ee9..000000000 --- a/include/acl.js +++ /dev/null @@ -1,240 +0,0 @@ -function ACL(backend_url, preset){ - that = this; - - that.url = backend_url; - - that.kp_timer = null; - - if (preset==undefined) preset = []; - that.allow_cid = (preset[0] || []); - that.allow_gid = (preset[1] || []); - that.deny_cid = (preset[2] || []); - that.deny_gid = (preset[3] || []); - that.group_uids = []; - that.nw = 4; //items per row. should be calulated from #acl-list.width - - that.list_content = $("#acl-list-content"); - that.item_tpl = unescape($(".acl-list-item[rel=acl-template]").html()); - that.showall = $("#acl-showall"); - - if (preset.length==0) that.showall.addClass("selected"); - - /*events*/ - that.showall.click(that.on_showall); - $(".acl-button-show").live('click', that.on_button_show); - $(".acl-button-hide").live('click', that.on_button_hide); - $("#acl-search").keypress(that.on_search); - $("#acl-wrapper").parents("form").submit(that.on_submit); - - /* startup! */ - that.get(0,100); -} - -ACL.prototype.on_submit = function(){ - aclfileds = $("#acl-fields").html(""); - $(that.allow_gid).each(function(i,v){ - aclfileds.append(""); - }); - $(that.allow_cid).each(function(i,v){ - aclfileds.append(""); - }); - $(that.deny_gid).each(function(i,v){ - aclfileds.append(""); - }); - $(that.deny_cid).each(function(i,v){ - aclfileds.append(""); - }); -} - -ACL.prototype.search = function(){ - var srcstr = $("#acl-search").val(); - that.list_content.html(""); - that.get(0,100, srcstr); -} - -ACL.prototype.on_search = function(event){ - if (that.kp_timer) clearTimeout(that.kp_timer); - that.kp_timer = setTimeout( that.search, 1000); -} - -ACL.prototype.on_showall = function(event){ - event.stopPropagation(); - if (that.showall.hasClass("selected")){ - return false; - } - that.showall.addClass("selected"); - - that.allow_cid = []; - that.allow_gid = []; - that.deny_cid = []; - that.deny_gid = []; - - that.updateview(); - - return false; -} - -ACL.prototype.on_button_show = function(event){ - event.stopPropagation(); - - /*that.showall.removeClass("selected"); - $(this).siblings(".acl-button-hide").removeClass("selected"); - $(this).toggleClass("selected");*/ - - that.set_allow($(this).parent().attr('id')); - - return false; -} -ACL.prototype.on_button_hide = function(event){ - event.stopPropagation(); - - /*that.showall.removeClass("selected"); - $(this).siblings(".acl-button-show").removeClass("selected"); - $(this).toggleClass("selected");*/ - - that.set_deny($(this).parent().attr('id')); - - return false; -} - -ACL.prototype.set_allow = function(itemid){ - type = itemid[0]; - id = parseInt(itemid.substr(1)); - switch(type){ - case "g": - if (that.allow_gid.indexOf(id)<0){ - that.allow_gid.push(id) - }else { - that.allow_gid.remove(id); - } - if (that.deny_gid.indexOf(id)>=0) that.deny_gid.remove(id); - break; - case "c": - if (that.allow_cid.indexOf(id)<0){ - that.allow_cid.push(id) - } else { - that.allow_cid.remove(id); - } - if (that.deny_cid.indexOf(id)>=0) that.deny_cid.remove(id); - break; - } - that.updateview(); -} - -ACL.prototype.set_deny = function(itemid){ - type = itemid[0]; - id = parseInt(itemid.substr(1)); - switch(type){ - case "g": - if (that.deny_gid.indexOf(id)<0){ - that.deny_gid.push(id) - } else { - that.deny_gid.remove(id); - } - if (that.allow_gid.indexOf(id)>=0) that.allow_gid.remove(id); - break; - case "c": - if (that.deny_cid.indexOf(id)<0){ - that.deny_cid.push(id) - } else { - that.deny_cid.remove(id); - } - if (that.allow_cid.indexOf(id)>=0) that.allow_cid.remove(id); - break; - } - that.updateview(); -} - -ACL.prototype.updateview = function(){ - if (that.allow_gid.length==0 && that.allow_cid.length==0 && - that.deny_gid.length==0 && that.deny_cid.length==0){ - that.showall.addClass("selected"); - /* jot acl */ - $('#jot-perms-icon').removeClass('lock').addClass('unlock'); - $('#jot-public').show(); - $('.profile-jot-net input').attr('disabled', false); - if(editor != false) { - $('#profile-jot-desc').html(ispublic); - } - - } else { - that.showall.removeClass("selected"); - /* jot acl */ - $('#jot-perms-icon').removeClass('unlock').addClass('lock'); - $('#jot-public').hide(); - $('.profile-jot-net input').attr('disabled', 'disabled'); - $('#profile-jot-desc').html(' '); - } - - $("#acl-list-content .acl-list-item").each(function(){ - itemid = $(this).attr('id'); - type = itemid[0]; - id = parseInt(itemid.substr(1)); - - btshow = $(this).children(".acl-button-show").removeClass("selected"); - bthide = $(this).children(".acl-button-hide").removeClass("selected"); - - switch(type){ - case "g": - var uclass = ""; - if (that.allow_gid.indexOf(id)>=0){ - btshow.addClass("selected"); - bthide.removeClass("selected"); - uclass="groupshow"; - } - if (that.deny_gid.indexOf(id)>=0){ - btshow.removeClass("selected"); - bthide.addClass("selected"); - uclass="grouphide"; - } - - $(that.group_uids[id]).each(function(i,v){ - $("#c"+v).removeClass("groupshow grouphide").addClass(uclass); - }); - - break; - case "c": - if (that.allow_cid.indexOf(id)>=0){ - btshow.addClass("selected"); - bthide.removeClass("selected"); - } - if (that.deny_cid.indexOf(id)>=0){ - btshow.removeClass("selected"); - bthide.addClass("selected"); - } - } - - }); - -} - - -ACL.prototype.get = function(start,count, search){ - var postdata = { - start:start, - count:count, - search:search, - } - - $.ajax({ - type:'POST', - url: that.url, - data: postdata, - dataType: 'json', - success:that.populate - }); -} - -ACL.prototype.populate = function(data){ - var height = Math.ceil(data.tot / that.nw) * 42; - that.list_content.height(height); - $(data.items).each(function(){ - html = "
    "+that.item_tpl+"
    "; - html = html.format( this.photo, this.name, this.type, this.id, '', this.network ); - if (this.uids!=undefined) that.group_uids[this.id] = this.uids; - //console.log(html); - that.list_content.append(html); - }); - that.updateview(); -} - diff --git a/include/ajaxupload.js b/include/ajaxupload.js deleted file mode 100644 index 67c4a56fb..000000000 --- a/include/ajaxupload.js +++ /dev/null @@ -1,695 +0,0 @@ -/** - * AJAX Upload ( http://valums.com/ajax-upload/ ) - * Copyright (c) Andris Valums - * Licensed under the MIT license ( http://valums.com/mit-license/ ) - * Thanks to Gary Haran, David Mark, Corey Burns and others for contributions. - */ - -(function () { - /* global window */ - /* jslint browser: true, devel: true, undef: true, nomen: true, bitwise: true, regexp: true, newcap: true, immed: true */ - - /** - * Wrapper for FireBug's console.log - */ - function log(){ - if (typeof(console) != 'undefined' && typeof(console.log) == 'function'){ - Array.prototype.unshift.call(arguments, '[Ajax Upload]'); - console.log( Array.prototype.join.call(arguments, ' ')); - } - } - - /** - * Attaches event to a dom element. - * @param {Element} el - * @param type event name - * @param fn callback This refers to the passed element - */ - function addEvent(el, type, fn){ - if (el.addEventListener) { - el.addEventListener(type, fn, false); - } else if (el.attachEvent) { - el.attachEvent('on' + type, function(){ - fn.call(el); - }); - } else { - throw new Error('not supported or DOM not loaded'); - } - } - - /** - * Attaches resize event to a window, limiting - * number of event fired. Fires only when encounteres - * delay of 100 after series of events. - * - * Some browsers fire event multiple times when resizing - * http://www.quirksmode.org/dom/events/resize.html - * - * @param fn callback This refers to the passed element - */ - function addResizeEvent(fn){ - var timeout; - - addEvent(window, 'resize', function(){ - if (timeout){ - clearTimeout(timeout); - } - timeout = setTimeout(fn, 100); - }); - } - - // Needs more testing, will be rewriten for next version - // getOffset function copied from jQuery lib (http://jquery.com/) - if (document.documentElement.getBoundingClientRect){ - // Get Offset using getBoundingClientRect - // http://ejohn.org/blog/getboundingclientrect-is-awesome/ - var getOffset = function(el){ - var box = el.getBoundingClientRect(); - var doc = el.ownerDocument; - var body = doc.body; - var docElem = doc.documentElement; // for ie - var clientTop = docElem.clientTop || body.clientTop || 0; - var clientLeft = docElem.clientLeft || body.clientLeft || 0; - - // In Internet Explorer 7 getBoundingClientRect property is treated as physical, - // while others are logical. Make all logical, like in IE8. - var zoom = 1; - if (body.getBoundingClientRect) { - var bound = body.getBoundingClientRect(); - zoom = (bound.right - bound.left) / body.clientWidth; - } - - if (zoom > 1) { - clientTop = 0; - clientLeft = 0; - } - - var top = box.top / zoom + (window.pageYOffset || docElem && docElem.scrollTop / zoom || body.scrollTop / zoom) - clientTop, left = box.left / zoom + (window.pageXOffset || docElem && docElem.scrollLeft / zoom || body.scrollLeft / zoom) - clientLeft; - - return { - top: top, - left: left - }; - }; - } else { - // Get offset adding all offsets - var getOffset = function(el){ - var top = 0, left = 0; - do { - top += el.offsetTop || 0; - left += el.offsetLeft || 0; - el = el.offsetParent; - } while (el); - - return { - left: left, - top: top - }; - }; - } - - /** - * Returns left, top, right and bottom properties describing the border-box, - * in pixels, with the top-left relative to the body - * @param {Element} el - * @return {Object} Contains left, top, right,bottom - */ - function getBox(el){ - var left, right, top, bottom; - var offset = getOffset(el); - left = offset.left; - top = offset.top; - - right = left + el.offsetWidth; - bottom = top + el.offsetHeight; - - return { - left: left, - right: right, - top: top, - bottom: bottom - }; - } - - /** - * Helper that takes object literal - * and add all properties to element.style - * @param {Element} el - * @param {Object} styles - */ - function addStyles(el, styles){ - for (var name in styles) { - if (styles.hasOwnProperty(name)) { - el.style[name] = styles[name]; - } - } - } - - /** - * Function places an absolutely positioned - * element on top of the specified element - * copying position and dimentions. - * @param {Element} from - * @param {Element} to - */ - function copyLayout(from, to){ - var box = getBox(from); - - addStyles(to, { - position: 'absolute', - left : box.left + 'px', - top : box.top + 'px', - width : from.offsetWidth + 'px', - height : from.offsetHeight + 'px' - }); - to.title = from.title; - - } - - /** - * Creates and returns element from html chunk - * Uses innerHTML to create an element - */ - var toElement = (function(){ - var div = document.createElement('div'); - return function(html){ - div.innerHTML = html; - var el = div.firstChild; - return div.removeChild(el); - }; - })(); - - /** - * Function generates unique id - * @return unique id - */ - var getUID = (function(){ - var id = 0; - return function(){ - return 'ValumsAjaxUpload' + id++; - }; - })(); - - /** - * Get file name from path - * @param {String} file path to file - * @return filename - */ - function fileFromPath(file){ - return file.replace(/.*(\/|\\)/, ""); - } - - /** - * Get file extension lowercase - * @param {String} file name - * @return file extenstion - */ - function getExt(file){ - return (-1 !== file.indexOf('.')) ? file.replace(/.*[.]/, '') : ''; - } - - function hasClass(el, name){ - var re = new RegExp('\\b' + name + '\\b'); - return re.test(el.className); - } - function addClass(el, name){ - if ( ! hasClass(el, name)){ - el.className += ' ' + name; - } - } - function removeClass(el, name){ - var re = new RegExp('\\b' + name + '\\b'); - el.className = el.className.replace(re, ''); - } - - function removeNode(el){ - el.parentNode.removeChild(el); - } - - /** - * Easy styling and uploading - * @constructor - * @param button An element you want convert to - * upload button. Tested dimentions up to 500x500px - * @param {Object} options See defaults below. - */ - window.AjaxUpload = function(button, options){ - this._settings = { - // Location of the server-side upload script - action: 'upload.php', - // File upload name - name: 'userfile', - // Additional data to send - data: {}, - // Submit file as soon as it's selected - autoSubmit: true, - // The type of data that you're expecting back from the server. - // html and xml are detected automatically. - // Only useful when you are using json data as a response. - // Set to "json" in that case. - responseType: false, - // Class applied to button when mouse is hovered - hoverClass: 'hover', - // Class applied to button when button is focused - focusClass: 'focus', - // Class applied to button when AU is disabled - disabledClass: 'disabled', - // When user selects a file, useful with autoSubmit disabled - // You can return false to cancel upload - onChange: function(file, extension){ - }, - // Callback to fire before file is uploaded - // You can return false to cancel upload - onSubmit: function(file, extension){ - }, - // Fired when file upload is completed - // WARNING! DO NOT USE "FALSE" STRING AS A RESPONSE! - onComplete: function(file, response){ - } - }; - - // Merge the users options with our defaults - for (var i in options) { - if (options.hasOwnProperty(i)){ - this._settings[i] = options[i]; - } - } - - // button isn't necessary a dom element - if (button.jquery){ - // jQuery object was passed - button = button[0]; - } else if (typeof button == "string") { - if (/^#.*/.test(button)){ - // If jQuery user passes #elementId don't break it - button = button.slice(1); - } - - button = document.getElementById(button); - } - - if ( ! button || button.nodeType !== 1){ - throw new Error("Please make sure that you're passing a valid element"); - } - - if ( button.nodeName.toUpperCase() == 'A'){ - // disable link - addEvent(button, 'click', function(e){ - if (e && e.preventDefault){ - e.preventDefault(); - } else if (window.event){ - window.event.returnValue = false; - } - }); - } - - // DOM element - this._button = button; - // DOM element - this._input = null; - // If disabled clicking on button won't do anything - this._disabled = false; - - // if the button was disabled before refresh if will remain - // disabled in FireFox, let's fix it - this.enable(); - - this._rerouteClicks(); - }; - - // assigning methods to our class - AjaxUpload.prototype = { - setData: function(data){ - this._settings.data = data; - }, - disable: function(){ - addClass(this._button, this._settings.disabledClass); - this._disabled = true; - - var nodeName = this._button.nodeName.toUpperCase(); - if (nodeName == 'INPUT' || nodeName == 'BUTTON'){ - this._button.setAttribute('disabled', 'disabled'); - } - - // hide input - if (this._input){ - // We use visibility instead of display to fix problem with Safari 4 - // The problem is that the value of input doesn't change if it - // has display none when user selects a file - this._input.parentNode.style.visibility = 'hidden'; - } - }, - enable: function(){ - removeClass(this._button, this._settings.disabledClass); - this._button.removeAttribute('disabled'); - this._disabled = false; - - }, - /** - * Creates invisible file input - * that will hover above the button - *
    - */ - _createInput: function(){ - var self = this; - - var input = document.createElement("input"); - input.setAttribute('type', 'file'); - input.setAttribute('name', this._settings.name); - - addStyles(input, { - 'position' : 'absolute', - // in Opera only 'browse' button - // is clickable and it is located at - // the right side of the input - 'right' : 0, - 'margin' : 0, - 'padding' : 0, - 'fontSize' : '480px', - // in Firefox if font-family is set to - // 'inherit' the input doesn't work - 'fontFamily' : 'sans-serif', - 'cursor' : 'pointer' - }); - - var div = document.createElement("div"); - addStyles(div, { - 'display' : 'block', - 'position' : 'absolute', - 'overflow' : 'hidden', - 'margin' : 0, - 'padding' : 0, - 'opacity' : 0, - // Make sure browse button is in the right side - // in Internet Explorer - 'direction' : 'ltr', - //Max zIndex supported by Opera 9.0-9.2 - 'zIndex': 2147483583, - 'cursor' : 'pointer' - - }); - - // Make sure that element opacity exists. - // Otherwise use IE filter - if ( div.style.opacity !== "0") { - if (typeof(div.filters) == 'undefined'){ - throw new Error('Opacity not supported by the browser'); - } - div.style.filter = "alpha(opacity=0)"; - } - - addEvent(input, 'change', function(){ - - if ( ! input || input.value === ''){ - return; - } - - // Get filename from input, required - // as some browsers have path instead of it - var file = fileFromPath(input.value); - - if (false === self._settings.onChange.call(self, file, getExt(file))){ - self._clearInput(); - return; - } - - // Submit form when value is changed - if (self._settings.autoSubmit) { - self.submit(); - } - }); - - addEvent(input, 'mouseover', function(){ - addClass(self._button, self._settings.hoverClass); - }); - - addEvent(input, 'mouseout', function(){ - removeClass(self._button, self._settings.hoverClass); - removeClass(self._button, self._settings.focusClass); - - // We use visibility instead of display to fix problem with Safari 4 - // The problem is that the value of input doesn't change if it - // has display none when user selects a file - input.parentNode.style.visibility = 'hidden'; - - }); - - addEvent(input, 'focus', function(){ - addClass(self._button, self._settings.focusClass); - }); - - addEvent(input, 'blur', function(){ - removeClass(self._button, self._settings.focusClass); - }); - - div.appendChild(input); - document.body.appendChild(div); - - this._input = input; - }, - _clearInput : function(){ - if (!this._input){ - return; - } - - // this._input.value = ''; Doesn't work in IE6 - removeNode(this._input.parentNode); - this._input = null; - this._createInput(); - - removeClass(this._button, this._settings.hoverClass); - removeClass(this._button, this._settings.focusClass); - }, - /** - * Function makes sure that when user clicks upload button, - * the this._input is clicked instead - */ - _rerouteClicks: function(){ - var self = this; - - // IE will later display 'access denied' error - // if you use using self._input.click() - // other browsers just ignore click() - - addEvent(self._button, 'mouseover', function(){ - if (self._disabled){ - return; - } - - if ( ! self._input){ - self._createInput(); - } - - var div = self._input.parentNode; - copyLayout(self._button, div); - div.style.visibility = 'visible'; - - }); - - - // commented because we now hide input on mouseleave - /** - * When the window is resized the elements - * can be misaligned if button position depends - * on window size - */ - //addResizeEvent(function(){ - // if (self._input){ - // copyLayout(self._button, self._input.parentNode); - // } - //}); - - }, - /** - * Creates iframe with unique name - * @return {Element} iframe - */ - _createIframe: function(){ - // We can't use getTime, because it sometimes return - // same value in safari :( - var id = getUID(); - - // We can't use following code as the name attribute - // won't be properly registered in IE6, and new window - // on form submit will open - // var iframe = document.createElement('iframe'); - // iframe.setAttribute('name', id); - - var iframe = toElement('