Changeset 36145
- Timestamp:
- 2022-04-14T17:13:54+12:00 (2 years ago)
- Location:
- main/trunk/greenstone3/web/interfaces/default
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
main/trunk/greenstone3/web/interfaces/default/js/utility_scripts.js
r33544 r36145 166 166 $.ajax(url); 167 167 } 168 169 var tkMetadataSetStatus = "needs-to-be-loaded"; 170 var tkMetadataElements = null; 171 172 173 function addTKLabelToImage(labelName, definition, name, comment) { 174 // lists of tkLabels and their corresponding codes, in order 175 let tkLabels = ["Attribution","Clan","Family","MultipleCommunities","CommunityVoice","Creative","Verified","NonVerified","Seasonal","WomenGeneral","MenGeneral", 176 "MenRestricted","WomenRestricted","CulturallySensitive","SecretSacred","OpenToCommercialization","NonCommercial","CommunityUseOnly","Outreach","OpenToCollaboration"]; 177 let tkCodes = ["tk_a","tk_cl","tk_f","tk_mc","tk_cv","tk_cr","tk_v","tk_nv","tk_s","tk_wg","tk_mg","tk_mr","tk_wr","tk_cs","tk_ss","tk_oc","tk_nc","tk_co","tk_o","tk_cb"]; 178 for (let i = 0; i < tkLabels.length; i++) { 179 if (labelName == tkLabels[i]) { 180 let labeldiv = document.querySelectorAll(".tklabels img"); 181 for (image of labeldiv) { 182 let labelCode = image.src.substr(image.src.lastIndexOf("/") + 1).replace(".png", ""); // get tk label code from image file name 183 if (labelCode == tkCodes[i]) { 184 image.title = "TK " + name + ": " + definition + " Click for more details."; // set tooltip 185 if (image.parentElement.parentElement.parentElement.classList[0] != "tocSectionTitle") { // disable onclick event in favourites section 186 image.addEventListener("click", function(e) { 187 let currPopup = document.getElementsByClassName("tkPopup")[0]; 188 if (currPopup == undefined || (currPopup != undefined && currPopup.id != labelCode)) { 189 let popup = document.createElement("div"); 190 popup.classList.add("tkPopup"); 191 popup.id = labelCode; 192 let popupText = document.createElement("span"); 193 let heading = "<h1>Traditional Knowledge Label:<br><h2>" + name + "</h2></h1>"; 194 let moreInformation = "<br> For more information about TK Labels, <a href='https://localcontexts.org/labels/traditional-knowledge-labels/' target='_blank'>click here.</a>"; 195 popupText.innerHTML = heading + comment + moreInformation; 196 let closeButton = document.createElement("span"); 197 closeButton.innerHTML = "×"; 198 closeButton.id = "tkCloseButton"; 199 closeButton.title = "Click to close window." 200 closeButton.addEventListener("click", function(e) { 201 closeButton.parentElement.remove(); 202 }); 203 popup.appendChild(closeButton); 204 popup.appendChild(popupText); 205 e.target.parentElement.appendChild(popup); 206 } 207 if (currPopup) currPopup.remove(); // remove existing popup div 208 }); 209 } 210 } 211 } 212 } 213 } 214 } 215 216 function addTKLabelsToImages(lang) { 217 if (tkMetadataElements == null) { 218 console.error("ajax call not yet loaded tk label metadata set"); 219 } else { 220 for (label of tkMetadataElements) { // for each tklabel element in tk.mds 221 let tkLabelName = label.attributes.name.value; // Element name="" 222 let attributes = label.querySelectorAll("[code=" + lang + "] Attribute"); // gets attributes for selected language 223 let tkName = attributes[0].textContent; // name="label" 224 let tkDefinition = attributes[1].textContent; // name="definition" 225 let tkComment = attributes[2].textContent; // name="comment" 226 addTKLabelToImage(tkLabelName, tkDefinition, tkName, tkComment); 227 } 228 } 229 } 230 231 function loadTKMetadataSet(lang) { 232 tkMetadataSetStatus = "loading"; 233 $.ajax({ 234 url: gs.variables["tkMetadataURL"], 235 success: function(xml) { 236 tkMetadataSetStatus = "loaded"; 237 let parser = new DOMParser(); 238 let tkmds = parser.parseFromString(xml, "text/xml"); 239 tkMetadataElements = tkmds.querySelectorAll("Element"); 240 if (document.readyState === "complete") { 241 addTKLabelsToImages(lang); 242 } else { 243 window.onload = function() { 244 addTKLabelsToImages(lang); 245 } 246 } 247 }, 248 error: function() { 249 tkMetadataSetStatus = "no-metadata-set-for-this-collection"; 250 console.log("No TK Label Metadata-set found for this collection"); 251 } 252 }); 253 }; 254 255 -
main/trunk/greenstone3/web/interfaces/default/style/core.css
r35811 r36145 723 723 } 724 724 725 .tocTextCell img {/* tklabel icon size & margin reduction */ 726 width: 3em !important; 727 margin-right: 0.2em !important; 728 margin-top: 0.2em !important; 729 } 730 725 731 .tableOfContentsContainer { 726 732 padding:1px; … … 1281 1287 margin: 0 auto; 1282 1288 } 1289 1290 /* Styling for TK Label related items */ 1291 1292 .tkPopup { 1293 position: relative; 1294 border: 1px solid darkgrey; 1295 border-radius: 0.2em; 1296 background: lightgrey; 1297 margin: 0.2em; 1298 padding: 0.8em; 1299 font-size: 16px; 1300 animation: fadein 0.4s; 1301 box-shadow: 0px 5px 8px rgba(0,0,0,0.1); 1302 } 1303 1304 .tkPopup a { 1305 color: black; 1306 text-decoration: none; 1307 border-bottom: 2px solid transparent; 1308 transition: 0.2s ease; 1309 } 1310 1311 .tkPopup a:hover { 1312 color: black; 1313 border-color: black; 1314 /* text-decoration: underline; */ 1315 } 1316 1317 .tkPopup h1 { 1318 font-size: 22px; 1319 margin-top: 0.2em; 1320 margin-bottom: 0; 1321 text-align: center; 1322 } 1323 1324 .tkPopup h2 { 1325 font-size: 20px; 1326 color: rgb(24, 88, 7); 1327 margin-top: 0.4em; 1328 text-align: center; 1329 } 1330 1331 .tklabels img { 1332 width: 3em; 1333 margin-right: 0.3em; 1334 margin-top: 0.3em; 1335 cursor: pointer; 1336 opacity: 0.8; 1337 transition: 0.2s ease; 1338 } 1339 1340 .tklabels img:hover { 1341 opacity: 1; 1342 } 1343 1344 #tkCloseButton { 1345 position: absolute; 1346 font-weight: bold; 1347 color: darkred; 1348 font-size: 26px; 1349 right: 0.5em; 1350 top: 0.4em; 1351 cursor: pointer; 1352 transition: 0.1s ease; 1353 } 1354 1355 #tkCloseButton:hover { 1356 text-shadow: 0 0 5px rgba(139,0,0,0.5); 1357 } 1358 1359 @keyframes fadein { 1360 from { 1361 opacity:0; 1362 } 1363 to { 1364 opacity: 1; 1365 } 1366 } -
main/trunk/greenstone3/web/interfaces/default/transform/layouts/header.xsl
r36113 r36145 720 720 no search indexes, which is why the extra test for the presence of an index/fq-something is necessary. --> 721 721 <xsl:template name="quick-search-area"> 722 723 <gsf:variable name="tkMetadataURL"><xsl:value-of select="$library_name"/>/sites/<xsl:value-of select="$site_name"/>/collect/<xsl:value-of select="$collNameChecked"/>/metadata/tk.mds</gsf:variable> 724 722 725 <xsl:if test="/page/pageResponse/collection[@name=$collNameChecked]/serviceList/service[@type='query']"> 723 726 <xsl:variable name="subaction" select="/page/pageRequest/@subaction"/> … … 859 862 </gsf:choose-metadata> 860 863 </xsl:template> 864 865 <xsl:template name="choose-tklabels"> 866 <script type="text/javascript"> 867 <xsl:text disable-output-escaping="yes"> 868 $(document).ready(function() { 869 if (tkMetadataSetStatus == "needs-to-be-loaded") { 870 loadTKMetadataSet("</xsl:text><xsl:value-of select="$lang"/><xsl:text disable-output-escaping="yes">"); 871 } 872 }) 873 </xsl:text> 874 </script> 875 876 <div class="tklabels"> 877 <gsf:switch> 878 <gsf:metadata name="tk.Attribution"/> 879 <gsf:when test="equals" test-value="true"> 880 <gsf:icon file="tklabels/tk_a.png"/> 881 </gsf:when> 882 </gsf:switch> 883 <gsf:switch> 884 <gsf:metadata name="tk.Clan"/> 885 <gsf:when test="equals" test-value="true"> 886 <gsf:icon file="tklabels/tk_cl.png"/> 887 </gsf:when> 888 </gsf:switch> 889 <gsf:switch> 890 <gsf:metadata name="tk.Family"/> 891 <gsf:when test="equals" test-value="true"> 892 <gsf:icon file="tklabels/tk_f.png"/> 893 </gsf:when> 894 </gsf:switch> 895 <gsf:switch> 896 <gsf:metadata name="tk.MultipleCommunities"/> 897 <gsf:when test="equals" test-value="true"> 898 <gsf:icon file="tklabels/tk_mc.png"/> 899 </gsf:when> 900 </gsf:switch> 901 <gsf:switch> 902 <gsf:metadata name="tk.CommunityVoice"/> 903 <gsf:when test="equals" test-value="true"> 904 <gsf:icon file="tklabels/tk_cv.png"/> 905 </gsf:when> 906 </gsf:switch> 907 <gsf:switch> 908 <gsf:metadata name="tk.Creative"/> 909 <gsf:when test="equals" test-value="true"> 910 <gsf:icon file="tklabels/tk_cr.png"/> 911 </gsf:when> 912 </gsf:switch> 913 <gsf:switch> 914 <gsf:metadata name="tk.Verified"/> 915 <gsf:when test="equals" test-value="true"> 916 <gsf:icon file="tklabels/tk_v.png"/> 917 </gsf:when> 918 </gsf:switch> 919 <gsf:switch> 920 <gsf:metadata name="tk.NonVerified"/> 921 <gsf:when test="equals" test-value="true"> 922 <gsf:icon file="tklabels/tk_nv.png"/> 923 </gsf:when> 924 </gsf:switch> 925 <gsf:switch> 926 <gsf:metadata name="tk.Seasonal"/> 927 <gsf:when test="equals" test-value="true"> 928 <gsf:icon file="tklabels/tk_s.png"/> 929 </gsf:when> 930 </gsf:switch> 931 <gsf:switch> 932 <gsf:metadata name="tk.WomenGeneral"/> 933 <gsf:when test="equals" test-value="true"> 934 <gsf:icon file="tklabels/tk_wg.png"/> 935 </gsf:when> 936 </gsf:switch> 937 <gsf:switch> 938 <gsf:metadata name="tk.MenGeneral"/> 939 <gsf:when test="equals" test-value="true"> 940 <gsf:icon file="tklabels/tk_mg.png"/> 941 </gsf:when> 942 </gsf:switch> 943 <gsf:switch> 944 <gsf:metadata name="tk.MenRestricted"/> 945 <gsf:when test="equals" test-value="true"> 946 <gsf:icon file="tklabels/tk_mr.png"/> 947 </gsf:when> 948 </gsf:switch> 949 <gsf:switch> 950 <gsf:metadata name="tk.WomenRestricted"/> 951 <gsf:when test="equals" test-value="true"> 952 <gsf:icon file="tklabels/tk_wr.png"/> 953 </gsf:when> 954 </gsf:switch> 955 <gsf:switch> 956 <gsf:metadata name="tk.CulturallySensitive"/> 957 <gsf:when test="equals" test-value="true"> 958 <gsf:icon file="tklabels/tk_cs.png"/> 959 </gsf:when> 960 </gsf:switch> 961 <gsf:switch> 962 <gsf:metadata name="tk.SecretSacred"/> 963 <gsf:when test="equals" test-value="true"> 964 <gsf:icon file="tklabels/tk_ss.png"/> 965 </gsf:when> 966 </gsf:switch> 967 <gsf:switch> 968 <gsf:metadata name="tk.OpenToCommercialization"/> 969 <gsf:when test="equals" test-value="true"> 970 <gsf:icon file="tklabels/tk_oc.png"/> 971 </gsf:when> 972 </gsf:switch> 973 <gsf:switch> 974 <gsf:metadata name="tk.NonCommercial"/> 975 <gsf:when test="equals" test-value="true"> 976 <gsf:icon file="tklabels/tk_nc.png"/> 977 </gsf:when> 978 </gsf:switch> 979 <gsf:switch> 980 <gsf:metadata name="tk.CommunityUseOnly"/> 981 <gsf:when test="equals" test-value="true"> 982 <gsf:icon file="tklabels/tk_co.png"/> 983 </gsf:when> 984 </gsf:switch> 985 <gsf:switch> 986 <gsf:metadata name="tk.Outreach"/> 987 <gsf:when test="equals" test-value="true"> 988 <gsf:icon file="tklabels/tk_o.png"/> 989 </gsf:when> 990 </gsf:switch> 991 <gsf:switch> 992 <gsf:metadata name="tk.OpenToCollaboration"/> 993 <gsf:when test="equals" test-value="true"> 994 <gsf:icon file="tklabels/tk_cb.png"/> 995 </gsf:when> 996 </gsf:switch> 997 </div> 998 </xsl:template> 999 1000 <xsl:template name="choose-tklabels-small"> 1001 <style> 1002 .tklabels img { 1003 width: 2em; 1004 } 1005 </style> 1006 <xsl:call-template name="choose-tklabels"/> 1007 </xsl:template> 1008 861 1009 </xsl:stylesheet>
Note:
See TracChangeset
for help on using the changeset viewer.