From dc66e451a966e5ab320451c87ad912a741a71d4e Mon Sep 17 00:00:00 2001 From: Tomas Bzatek Date: Wed, 31 Dec 2008 19:29:50 +0100 Subject: Use image title as meta description Allow per-album meta tags --- generators.c | 34 ++++++++++++++++++++++------------ items.c | 9 +++++++++ items.h | 3 +++ sample/src/CIAF_1/index.xml | 9 +++++++++ sample/src/setup.xml | 9 ++++++++- setup.c | 4 ++++ setup.h | 1 + 7 files changed, 56 insertions(+), 13 deletions(-) diff --git a/generators.c b/generators.c index d26e4e7..6bcf637 100644 --- a/generators.c +++ b/generators.c @@ -374,18 +374,21 @@ write_html_album (TGallerySetup *setup, } if (strstr (b, "")) { s1 = g_strdup_printf ("\t\n", APP_VERSION); - if (setup->meta_author) { - s2 = g_strdup_printf ("%s\t\n", s1, setup->meta_author); + if (setup->meta_author || items->meta_author) { + s2 = g_strdup_printf ("%s\t\n", s1, + items->meta_author ? items->meta_author : setup->meta_author); g_free (s1); s1 = s2; } - if (setup->meta_description) { - s2 = g_strdup_printf ("%s\t\n", s1, setup->meta_description); + if (setup->meta_description || items->meta_description) { + s2 = g_strdup_printf ("%s\t\n", s1, + items->meta_description? items->meta_description : setup->meta_description); g_free (s1); s1 = s2; } - if (setup->meta_keywords) { - s2 = g_strdup_printf ("%s\t\n", s1, setup->meta_keywords); + if (setup->meta_keywords || items->meta_keywords) { + s2 = g_strdup_printf ("%s\t\n", s1, + items->meta_keywords ? items->meta_keywords : setup->meta_keywords); g_free (s1); s1 = s2; } @@ -596,6 +599,7 @@ write_html_image (TGallerySetup *setup, char *b; gboolean res; int level; + gboolean override_title_meta; fin = fopen (template_src, "r"); @@ -893,19 +897,25 @@ write_html_image (TGallerySetup *setup, g_free (s1); } if (strstr (b, "")) { + override_title_meta = setup->use_title_as_meta && title && (strlen (title) > 0); s1 = g_strdup_printf ("\t\n", APP_VERSION); - if (setup->meta_author) { - s2 = g_strdup_printf ("%s\t\t\n", s1, setup->meta_author); + if (setup->meta_author || parent_items->meta_author) { + s2 = g_strdup_printf ("%s\t\n", s1, + parent_items->meta_author ? parent_items->meta_author : setup->meta_author); g_free (s1); s1 = s2; } - if (setup->meta_description) { - s2 = g_strdup_printf ("%s\t\n", s1, setup->meta_description); + if (setup->meta_description || parent_items->meta_description || override_title_meta) { + s3 = override_title_meta ? g_markup_escape_text (title, -1) : NULL; + s2 = g_strdup_printf ("%s\t\n", s1, + override_title_meta ? s3 : (parent_items->meta_description ? parent_items->meta_description : setup->meta_description)); g_free (s1); + if (s3) g_free (s3); s1 = s2; } - if (setup->meta_keywords) { - s2 = g_strdup_printf ("%s\t\n", s1, setup->meta_keywords); + if ((setup->meta_keywords || parent_items->meta_keywords) && (! override_title_meta)) { + s2 = g_strdup_printf ("%s\t\n", s1, + parent_items->meta_keywords ? parent_items->meta_keywords : setup->meta_keywords); g_free (s1); s1 = s2; } diff --git a/items.c b/items.c index 97202f2..413630f 100644 --- a/items.c +++ b/items.c @@ -83,6 +83,9 @@ parse_album_xml (const char *filename, TAlbum *index) index->portrait_height = xml_file_get_node_attribute_long (xml, "/gallery/general/images", "portrait_h", 0); index->border_style = xml_file_get_node_attribute (xml, "/gallery/general/border", "style"); + index->meta_author = xml_file_get_node_value (xml, "/gallery/general/meta/author/text()"); + index->meta_description = xml_file_get_node_value (xml, "/gallery/general/meta/description/text()"); + index->meta_keywords = xml_file_get_node_value (xml, "/gallery/general/meta/keywords/text()"); /* Section Items */ count = xml_file_node_get_children_count (xml, "/gallery/items/*"); @@ -221,6 +224,12 @@ free_album_data (TAlbum *album) free (album->base_dir); if (album->border_style) free (album->border_style); + if (album->meta_author) + free (album->meta_author); + if (album->meta_description) + free (album->meta_description); + if (album->meta_keywords) + free (album->meta_keywords); if (album->items) { if (album->items->len > 0) { diff --git a/items.h b/items.h index 528d71e..e917e82 100644 --- a/items.h +++ b/items.h @@ -47,6 +47,9 @@ typedef struct { unsigned long portrait_width; unsigned long portrait_height; char *border_style; + char *meta_author; + char *meta_description; + char *meta_keywords; } TAlbum; typedef struct { diff --git a/sample/src/CIAF_1/index.xml b/sample/src/CIAF_1/index.xml index 7e89297..5d40936 100644 --- a/sample/src/CIAF_1/index.xml +++ b/sample/src/CIAF_1/index.xml @@ -18,6 +18,15 @@ + + + + + + John Doe Jr. + CIAF - Czech International Air Fest 2007 + ciaf,aircraft,military,exhibition + diff --git a/sample/src/setup.xml b/sample/src/setup.xml index ef37f9a..234e8f0 100644 --- a/sample/src/setup.xml +++ b/sample/src/setup.xml @@ -41,12 +41,19 @@ - + + + John Doe CGG Sample gallery cataract, sample, gallery + + + + +