fu: Close-up of Fu, bringing a scoop of water to her mouth (Default)
fu ([personal profile] fu) wrote in [site community profile] changelog2010-09-09 05:21 am

[dw-free] entry metadata (currents) should print in sorted field order

[commit: http://hg.dwscoalition.org/dw-free/rev/56d0be48ab8b]

http://bugs.dwscoalition.org/show_bug.cgi?id=2944

Sort metadata fields alphabetically to make it consistent with how the site
scheme sorts it, instead of just getting the metadata in whatever order the
backend feels like. Exposes a new function "keys_alpha".

Patch by [personal profile] kareila.

Files modified:
  • bin/upgrading/s2layers/core1.s2
  • bin/upgrading/s2layers/core2.s2
  • cgi-bin/LJ/S2.pm
--------------------------------------------------------------------------------
diff -r ad38e69bc358 -r 56d0be48ab8b bin/upgrading/s2layers/core1.s2
--- a/bin/upgrading/s2layers/core1.s2	Wed Sep 08 22:08:26 2010 -0500
+++ b/bin/upgrading/s2layers/core1.s2	Thu Sep 09 13:21:21 2010 +0800
@@ -1877,6 +1877,9 @@ function builtin htmlattr(string name, i
 function builtin htmlattr(string name, int value) : string
 "If the value isn't blank, return in HTML attribute format with a leading space.  HTML of name is not escaped.";
 
+function builtin keys_alpha(string{} elements) : string[]
+"Return the keys of the array in alphabetically sorted order.";
+
 ### Language
 
 function lang_map_plural (int n) : int {
@@ -2290,7 +2293,7 @@ function Entry::print_metadata() {
 function Entry::print_metadata() {
     if (size $.metadata) {
         """<div class="metadata">\n""";
-        foreach var string m ($.metadata) {
+        foreach var string m ( keys_alpha( $.metadata ) ) {
             "<div><strong>$m</strong>: ";
             if ($m == "mood") {
                 " $.mood_icon ";
diff -r ad38e69bc358 -r 56d0be48ab8b bin/upgrading/s2layers/core2.s2
--- a/bin/upgrading/s2layers/core2.s2	Wed Sep 08 22:08:26 2010 -0500
+++ b/bin/upgrading/s2layers/core2.s2	Thu Sep 09 13:21:21 2010 +0800
@@ -1007,6 +1007,9 @@ function builtin print_search_form(strin
 function builtin print_search_form(string button_text) 
 "Prints a search form, with the button text as the label to the submit button.";
 
+function builtin keys_alpha(string{} elements) : string[]
+"Return the keys of the array in alphabetically sorted order.";
+
 ##[ properties ]
 
 propgroup colors = "Colors";
@@ -4431,7 +4434,7 @@ function Entry::print_metadata() {
     if (size $.metadata) {
         var string position = ($*entry_metadata_position == "top") ? " top-metadata" : " bottom-metadata";
         """<div class="metadata$position">\n<ul>\n""";
-        foreach var string m ($.metadata) {
+        foreach var string m ( keys_alpha( $.metadata ) ) {
             var string metadata_name = lang_metadata_title($m);
             """<li><span class="metadata-label metadata-label-$m">$metadata_name: </span>""";
             if ($m == "mood") {
diff -r ad38e69bc358 -r 56d0be48ab8b cgi-bin/LJ/S2.pm
--- a/cgi-bin/LJ/S2.pm	Wed Sep 08 22:08:26 2010 -0500
+++ b/cgi-bin/LJ/S2.pm	Thu Sep 09 13:21:21 2010 +0800
@@ -4334,4 +4334,12 @@ sub Siteviews__set_content {
     $this->{_content}->{$content} = $text;
 }
 
+sub keys_alpha {
+    my ( $ctx, $ref ) = @_;
+    return undef unless ref $ref eq 'HASH';
+
+    # return reference to array of sorted keys
+    return [ sort { $a cmp $b } keys %$ref ];
+}
+
 1;
--------------------------------------------------------------------------------

Post a comment in response:

This account has disabled anonymous posting.
If you don't have an account you can create one now.
No Subject Icon Selected
More info about formatting

If you are unable to use this captcha for any reason, please contact us by email at support@dreamwidth.org