Index: /trunk/scripts/SyncEditorLayerIndex.groovy
===================================================================
--- /trunk/scripts/SyncEditorLayerIndex.groovy	(revision 12260)
+++ /trunk/scripts/SyncEditorLayerIndex.groovy	(revision 12261)
@@ -251,4 +251,8 @@
             if((t = getAttributionUrl(e)))
                 stream.write "        <attribution-url>${cdata(t)}</attribution-url>\n"
+            if((t = getLogoImage(e)))
+                stream.write "        <logo-image>${cdata(t, true)}</logo-image>\n"
+            if((t = getLogoUrl(e)))
+                stream.write "        <logo-url>${cdata(t)}</logo-url>\n"
             if((t = getTermsOfUseText(e)))
                 stream.write "        <terms-of-use-text>${cdata(t, true)}</terms-of-use-text>\n"
@@ -673,4 +677,13 @@
                 }
             }
+            if(getAttributionUrl(j) && !getAttributionText(j)) {
+                myprintln "* Attribution link without text: ${getDescription(j)}"
+            }
+            if(getLogoUrl(j) && !getLogoImage(j)) {
+                myprintln "* Logo link without image: ${getDescription(j)}"
+            }
+            if(getTermsOfUseText(j) && !getTermsOfUseUrl(j)) {
+                myprintln "* Terms of Use text without link: ${getDescription(j)}"
+            }
             def js = getShapes(j)
             if(js.size()) {
@@ -841,4 +854,12 @@
         return null
     }
+    static String getLogoImage(Object e) {
+        if (e instanceof ImageryInfo) return e.getAttributionImageRaw()
+        return null
+    }
+    static String getLogoUrl(Object e) {
+        if (e instanceof ImageryInfo) return e.getAttributionImageURL()
+        return null
+    }
     static String getPermissionReferenceUrl(Object e) {
         if (e instanceof ImageryInfo) return e.getPermissionReferenceURL()
