1<!DOCTYPE html> 2<html lang="en"> 3 4<head> 5 <meta charset="utf-8" /> 6 <title>GlobalAzure - The Ultimate Microsoft Azure Community Event</title> 7 <meta name="application-name" content="GlobalAzure"> 8 <meta name="description" content="GlobalAzure is a worldwide community event dedicated to Microsoft Azure. Join cloud professionals and developers for expert-led sessions, hands-on workshops, and networking opportunities." /> 9 <meta name="keywords" content="GlobalAzure, GlobalAzure 2026, Global Azure 2026, Microsoft Azure, Azure cloud, cloud computing, Azure developers, Azure workshops, cloud conferences" /> 10 <meta name="viewport" content="width=device-width, initial-scale=1" /> 11 <meta name="robots" content="index, follow" /> 12 <meta property="og:title" content="GlobalAzure - The Ultimate Microsoft Azure Community Event" /> 13 <meta property="og:description" content="Join GlobalAzure, the premier community event for Microsoft Azure professionals, featuring expert sessions, workshops, and networking." /> 14 <meta property="og:image" content="https://globalazure.net/faviconglobalazure.webp" /> 15 <meta property="og:url" content="https://globalazure.net/" /> 16 <meta property="og:type" content="website" /> 17 <meta name="twitter:card" content="summary_large_image" /> 18 <meta name="twitter:title" content="GlobalAzure - The Ultimate Microsoft Azure Community Event" /> 19 <meta name="twitter:description" content="Join GlobalAzure, the top community-driven event for Microsoft Azure professionals. Learn, share, and grow!" /> 20 <meta name="twitter:image" content="https://globalazure.net/faviconglobalazure.webp" /> 21 <meta name="twitter:site" content="@globalazure" /> 22 <base href="/" /> 23
23<script type="application/ld+json" id="schema-json"> 24 { 25 "@context": "https://schema.org", 26 "@type": "Event", 27 "name": "GlobalAzure 2026", 28 "startDate": "2026-03-16", 29 "endDate": "2026-03-18", 30 "eventAttendanceMode": "https://schema.org/OnlineEventAttendanceMode", 31 "eventStatus": "https://schema.org/EventScheduled", 32 "location": { 33 "@type": "VirtualLocation", 34 "url": "https://globalazure.net/" 35 }, 36 "image": "https://globalazure.net/faviconglobalazure.webp", 37 "description": "GlobalAzure is a worldwide community-driven event for Microsoft Azure enthusiasts, offering expert-led sessions, hands-on workshops, and networking.", 38 "organizer": { 39 "@type": "Organization", 40 "name": "GlobalAzure", 41 "url": "https://globalazure.net/" 42 } 43 } 44 </script>
44 45 <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/font/bootstrap-icons.css"> 46 <link rel="stylesheet" href="css/bootstrap/bootstrap.min.css" /> 47 <link rel="stylesheet" href="css/app.css" /> 48 <link rel="stylesheet" href="css/custom.min.css" /> 49 <link rel="stylesheet" href="lib/theme.min.css" /> 50 <link rel="canonical" href="https://globalazure.net/" /> 51 <link rel="icon" href="favicon.ico" sizes="16x16 32x32 48x48" type="image/x-icon" /> 52 <link href="GlobalAzure.Web.styles.css" rel="stylesheet" /> 53 <link href="manifest.webmanifest" rel="manifest" /> 54 <link rel="apple-touch-icon" sizes="512x512" href="favicon.ico" /> 55 <link rel="apple-touch-icon" sizes="192x192" href="favicon.ico" /> 56 <link rel="shortcut icon" href="favicon.ico" sizes="256x256" /> 57 58 <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"> 59 <!--<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/ionicons/7.4.0/collection/components/icon/icon.min.css" type="text/css"/>--> 60 <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/font/bootstrap-icons.css"> 61 62 <link rel="preconnect" href="https://fonts.googleapis.com"> 63 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> 64 <link href="https://fonts.googleapis.com/css2?family=Nunito+Sans:ital,opsz,wght@0,6..12,200..1000;1,6..12,200..1000&display=swap" rel="stylesheet"> 65</head> 66 67<body> 68 69 <div id="app"> 70 <svg class="loading-progress"> 71 <circle r="40%" cx="50%" cy="50%" /> 72 <circle r="40%" cx="50%" cy="50%" /> 73 </svg> 74 <div class="loading-progress-text"></div> 75 </div> 76 77 <div id="blazor-error-ui"> 78 An unhandled error has occurred. 79 <a href="" class="reload">Reload</a> 80 <a class="dismiss">ð</a> 81 </div> 82
82<script src="_content/Microsoft.Authentication.WebAssembly.Msal/AuthenticationService.js"></script>
82 83
83<script src="_framework/blazor.webassembly.js"></script>
83 84
84<script> 85 fetch('appsettings.json') 86 .then(response => response.json()) 87 .then(config => { 88 const siteKey = config.ReCaptchaSiteKey; 89 const script = document.createElement('script'); 90 script.src = `https://www.google.com/recaptcha/api.js?render=${siteKey}`; 91 script.async = true; 92 script.defer = true; 93 document.head.appendChild(script); 94 }); 95 </script>
95 96 97
97<script src="lib/theme.min.js"></script>
97 98
98<script>navigator.serviceWorker.register('service-worker.js');</script>
98 99 100 <!-- Bootstrap Bundle with Popper --> 101
101<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"></script>
101 102 103
103<script> 104 window.OnLocationChange = () => { 105 var backdrop = document.getElementsByClassName("modal-backdrop"); 106 if (backdrop.length > 0) { 107 var body = document.getElementsByTagName("body"); 108 body[0].setAttribute("style", ""); 109 backdrop[0].remove(); 110 } 111 } 112 window.PushButton = (dotnethelper, id) => { 113 document.getElementById(id).click(); 114 } 115 </script>
115 116
116<script> 117 function updateSchemaJson(pageType, jsonData) { 118 // Get the JSON-LD script element 119 const schemaElement = document.getElementById("schema-json"); 120 121 if (schemaElement) { 122 // Format and insert the JSON data 123 schemaElement.innerHTML = JSON.stringify(jsonData, null, 2); 124 } 125 } 126 127 // Keep existing functions that are being called 128 // Events page function - use this in AllEvents.razor 129 window.updateEventsSchema = function (json) { 130 const eventsData = JSON.parse(json); 131 if (eventsData && eventsData.length > 0) { 132 // If events exist, create a schema with event data 133 const schema = { 134 "@context": "https://schema.org", 135 "@type": "Event", 136 "name": "GlobalAzure 2026", 137 "startDate": "2026-03-16", 138 "endDate": "2026-03-18", 139 "eventAttendanceMode": "https://schema.org/OnlineEventAttendanceMode", 140 "eventStatus": "https://schema.org/EventScheduled", 141 "location": { 142 "@type": "VirtualLocation", 143 "url": "https://globalazure.net/" 144 }, 145 "image": "https://globalazure.net/faviconglobalazure.webp", 146 "description": "GlobalAzure is a worldwide community-driven event for Microsoft Azure enthusiasts, offering expert-led sessions, hands-on workshops, and networking.", 147 "organizer": { 148 "@type": "Organization", 149 "name": "GlobalAzure", 150 "url": "https://globalazure.net/" 151 }, 152 "subEvents": eventsData 153 }; 154 updateSchemaJson("events", schema); 155 } else { 156 // No events, use default organization schema 157 window.setDefaultSchema(); 158 } 159 }; 160 161 // Communities page function - use this in AllCommunities.razor 162 window.updateCommunitiesSchema = function (json) { 163 const communitiesData = JSON.parse(json); 164 if (communitiesData && communitiesData.length > 0) { 165 // If communities exist, create a schema with communities data 166 const schema = { 167 "@context": "https://schema.org", 168 "@type": "Organization", 169 "name": "GlobalAzure Communities", 170 "url": "https://globalazure.net/", 171 "logo": "https://globalazure.net/faviconglobalazure.webp", 172 "description": "A network of Microsoft Azure community groups worldwide participating in GlobalAzure events.", 173 "member": communitiesData 174 }; 175 updateSchemaJson("communities", schema); 176 } else { 177 // No communities, use default organization schema 178 window.setDefaultSchema(); 179 } 180 }; 181 182 // Function to set a default schema when no events or communities are present 183 window.setDefaultSchema = function () { 184 const defaultSchema = { 185 "@context": "https://schema.org", 186 "@type": "Organization", 187 "url": "https://globalazure.net/", 188 "logo": "https://globalazure.net/faviconglobalazure.webp", 189 "name": "GlobalAzure", 190 "description": "GlobalAzure is a worldwide community-driven event for Microsoft Azure enthusiasts, offering expert-led sessions, hands-on workshops, and networking.", 191 "address": { 192 "@type": "PostalAddress", 193 "addressCountry": "FR" 194 } 195 }; 196 197 updateSchemaJson("default", defaultSchema); 198 }; 199 200 // Selected Event page function - use this in SelectedEvent.razor 201 window.updateSelectedEventSchema = function (json) { 202 const eventData = JSON.parse(json); 203 if (eventData) { 204 // Create schema for a single event 205 const schema = { 206 "@context": "https://schema.org",
207 "@type": "Event", 208 "name": eventData.title || "GlobalAzure Event", 209 "startDate": eventData.startDate, 210 "endDate": eventData.endDate, 211 "eventAttendanceMode": eventData.isVirtual ? 212 "https://schema.org/OnlineEventAttendanceMode" : 213 "https://schema.org/OfflineEventAttendanceMode", 214 "eventStatus": "https://schema.org/EventScheduled", 215 "description": eventData.description || "A GlobalAzure community event", 216 "image": eventData.imageUrl || "https://globalazure.net/faviconglobalazure.webp", 217 "organizer": { 218 "@type": "Organization", 219 "name": eventData.communityName || "GlobalAzure Community", 220 "url": `https://globalazure.net/communities/${eventData.communityId}` 221 } 222 }; 223 224 // Add location based on event type 225 if (eventData.isVirtual) { 226 schema.location = { 227 "@type": "VirtualLocation", 228 "url": eventData.eventUrl || "https://globalazure.net/" 229 }; 230 } else { 231 schema.location = { 232 "@type": "Place", 233 "name": eventData.venueName || "", 234 "address": { 235 "@type": "PostalAddress", 236 "streetAddress": eventData.venueAddress || "", 237 "addressCountry": eventData.country || "" 238 }, 239 "geo": { 240 "@type": "GeoCoordinates", 241 "latitude": eventData.latitude, 242 "longitude": eventData.longitude 243 } 244 }; 245 } 246 247 // Add performer information if available 248 if (eventData.speakers && eventData.speakers.length > 0) { 249 schema.performer = eventData.speakers.map(speaker => ({ 250 "@type": "Person", 251 "name": speaker.name, 252 "image": speaker.pictureUrl || "" 253 })); 254 } 255 256 updateSchemaJson("selectedEvent", schema); 257 } else { 258 // No event data, use default schema 259 window.setDefaultSchema(); 260 } 261 }; 262 263 // Selected Community page function - use this in SelectedCommunity.razor 264 window.updateSelectedCommunitySchema = function (json) { 265 const communityData = JSON.parse(json); 266 if (communityData) { 267 // Create schema for a single community 268 const schema = { 269 "@context": "https://schema.org", 270 "@type": "Organization", 271 "name": communityData.name || "GlobalAzure Community", 272 "url": communityData.websiteUrl || "https://globalazure.net/", 273 "logo": communityData.logoUrl || "https://globalazure.net/faviconglobalazure.webp", 274 "description": communityData.description || "A Microsoft Azure community group participating in GlobalAzure events.", 275 "address": { 276 "@type": "PostalAddress", 277 "addressCountry": communityData.countryName || communityData.country || "" 278 } 279 }; 280 281 if (communityData.events && communityData.events.length > 0) { 282 schema.event = communityData.events.map(event => ({ 283 "@type": "Event", 284 "name": event.title || "GlobalAzure Event", 285 "startDate": event.startDate, 286 "endDate": event.endDate, 287 "url": `https://globalazure.net/events/${event.id}` 288 })); 289 } 290 291 updateSchemaJson("selectedCommunity", schema); 292 } else { 293 window.setDefaultSchema(); 294 } 295 }; 296 </script>
296 297</body> 298 299</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.