/o//commerce-media/accounts/-1/images/18576057?download=true

Social Map 2.0
DXP App
Analytics and Optimization
18576003
★ Get Social Map for Liferay 7/DXP ★
https://web.liferay.com/en/marketplace/-/mp/application/100293866

Organizations and users come straight to the point with Social Map 2.0.

This app is based on Google Maps and provides tailor-made maps for organization and user pages.

So you can plot user addresses on user pages beside content from Social Graph 2.0. On organization pages you get organization addresses displayed as well as organization member locations, if you want - it’s configurable. It’s up to you.

Click on any marker to pop up an information window that also links profile pages provided at this place. Other links provide direct interaction for e-mail, Skype or a good old phone call. The information window also provides a link to export current data to your address book (VCard).

Thanks to marker clustering and spider-aggregation of markers, as well as filtering, an easy
navigation is guaranteed. The report feature provides navigation tools and marker-animation on
mouse-over rows and complements Social Map 2.0.

Features:
• Find organizations and users on Google Maps
• Implement map types for public + private user pages and organization pages
• Provide user locations with user maps
• Provide current organization’s - and its members’ - location with the organization map
• Visualize organizations, contained in Social Graph 2.0, on the same page.
• Link to other pages and interact through the information window: open user or organization pages, interact by mail, phone or skype and add the current entry to your personal address book (VCard)
• Easy navigation thanks clustering markers
• Spidernet for markers sharing the same address
• Filter, zoom and more features are provided by the toolbar.
• Benefit from Google Geocoding with fallback (if configured) to GeoIP-coding (serviced by
FreeGeoIP), current user’s location
• Enjoy the reporting section. It provides quick-locate and zoom, highlights locations.
• Configure maps for each type, profit from rich customization options.

Benefits:
• Obtain overview
• Interact directly
• Link user and organization profile pages
• Geographical allocation of Social Graph 2.0 data
• Easy map configuration per page type

Use Cases:
• Locate hierarchical military units in their fixed or temporary headquarters
• Optimize your B2B/B2C traveling agenda
• Coordinate driving routes and means in case of issues (e.g. fire- or crime-fighting)
• Alert Locations and persons in case of terrorism warning
• Locate health organizations like hospitals, surgeons, cardiologs or other experts SOS
• Build your optimized vendor/service organisations units based on client location density
• Views, Hotels, Gastronomy, Leisure & Golf
• Meet your nearbys - intensify your virtual CRM/Customer Experience.

Languages:
• English, German

Integrated documentation (PDF):
• User’s Guide (click info button in the toolbar)
• Administrator’s Guide (at documentation link in the setup form)

Summary:
Straight to the point with Social Map 2.0 - geographical allocation of users and organizations including information and direct interaction. Integration of *Social Graph 2.0 data provided.

*Social Graph 2.0: more information, see product information on https://web.liferay.com/en/marketplace/-/mp/application/86632969 ★Social Map für Liferay 7/DXP ★
https://web.liferay.com/de/marketplace/-/mp/application/100293866

Mit Social Map 2.0 bringen Sie Benutzer und Organisationen auf den Punkt.

Die Anwendung basiert auf Google Maps und bietet zugeschnittene Karten für Benutzer- und Organisationsseiten.

Die Konfiguration bestimmt den Inhalt: so wird auf Benutzerseiten primär die Benutzeradressen dargestellt, es können aber auch Organisationen aus Social Graph 2.0 übernommen werden. Auf Organisationsseiten können, nebst Adressen der Organisation, auch deren Mitglieder eingezeichnet werden.

Praktisch, das Infofenster zum jeweiligen Marker: von dort lässt sich direkt die jeweilige Profilseite aufrufen (Verknüpfung), aber auch direkt eine E-Mail schreiben, skypen oder ganz einfach per Telefon anrufen. Der im Infofenster angezeigte Eintrag kann direkt in Ihr Adressbuch übernommen werden (Export).

Dank Cluster- und Spider-Zusammenfassung von Markern, sowie Filter ist stets bequemer Umgang garantiert. Der Reportbereich mit Schnellsprung, bzw. Zoom auf Adresse, sowie Hervorhebung rundet die Anwendung ab.

Highlights:
• Organisationen und Benutzer auf Google Maps einzeichnen
• Karten für: private und öffentliche Benutzerseite, öffentliche Organisationsseite
• Benutzerkarte privat/öffentlich mit Benutzeradressen, Organisationen aus Darstellung Social Graph 2.0
• Organisationskarte, Organisation und deren Mitglieder
• Uebernahme Organisationen aus Social Graph 2.0 auf der selben Seite.
• Interaktion/Infofenster mit Links für Profilseite User/Organisation zur gegenseitigen Verknüpfung, Mail, Telefon, Skype-Call und Addressbuch-Export (VCard)
• Cluster-orientiertes Navigieren
• Spinnennetz für übereinanderliegende Punkte
• Toolbar mit Filter, Zoom und Zusatzbuttons
• Google Geocoding mit Fallback auf Geo IP-Coding (via FreeGeoIP), eigener Standort
• Reportbereich mit weiteren Funktionen Move und Zoom, sowie Hervorhebung Standorte
• Kartentyp für jede Seitenart, anpassbar - Vielzahl von Konfigurationsmöglichkeiten

Vorteile:
• rasch Uebersicht gewinnen
• direktes Interagieren
• Verknüpfung der Teilnehmer (Links zu Profilseiten)
• geografische Allokation von Social Graph 2.0-Daten
• gute Anpassbarkeit, pro Seitentyp

Use Cases:
• Finde hierarchische militärische Formationen in festen und temporären Kommando-Posten
• B2B/B2C-Reiseagenda optimal planen
• Fahrten und Mittel für Notfälle koordinieren (bspw. Brandfall, Kriminalitätsbekämpfung)
• Gefährdete Personen und Orte anzeigen (Bsp. Terrorwarnung)
• Orte zu Gesundheitsversorgung (Spitäler, Spezialisten)
• Wählen Sie Standorte von Vertrieb- und Service-Organisationen basierend auf regionale Kundendichte
• Aussichtspunkte, Hotels, Gastronomie, Freizeit & Golf
• Vereinbarung von Treffen mit Freunden oder echtes Erlebnis mit bisher virtuellem CRM Kontakt nahe Aufenthaltsort.

Sprachen:
• Deutsch, Englisch
Integrierte Dokumentation (PDF):
• Anwender-Handbuch, via Info Schaltfläche in der Werkzeugleiste
• Administratoren-Handbuch (EN), via Link Dokumentation in der Setup-Maske"

Fazit:
Social Geograph 2.0: Benutzer und Organisationen auf den Punkt gebracht - geografische Allokation, Information und Interaktion. Für Nutzer von *Social Graph 2.0 besteht zudem die Möglichkeit, Graph-Daten zu übernehmen.

*Social Graph 2.0: mehr Informationen im Liferay Marketplace unter https://web.liferay.com/de/marketplace/-/mp/application/86632969
DEVELOPER
Um erro ocorreu enquanto processava o modelo.
The string doesn't match the expected date/time/date-time format. The string to parse was: "21/11/24 18:22". The expected format was: "MM/dd/yy h:mm a".
The nested reason given follows:
Unparseable date: "21/11/24 18:22"

----
FTL stack trace ("~" means nesting-related):
	- Failed at: ${CPDefinition_displayDate.getData()?...  [in template "3192443#3192485#null" at line 46, column 20]
	~ Reached through: #nested  [in template "3192443#3192485#null" in macro "section" at line 197, column 17]
	~ Reached through: @section title=languageUtil.get(local...  [in template "3192443#3192485#null" at line 42, column 1]
----
1<#assign 
2	channel = restClient.get("/headless-commerce-delivery-catalog/v1.0/channels?accountId=-1&filter=name eq 'Marketplace Channel' and siteGroupId eq '${themeDisplay.getScopeGroupId()}'") 
3 
4	product = restClient.get( 
5		"/headless-commerce-delivery-catalog/v1.0/channels/" + channel.items[0].id + 
6		"/products/" + CPDefinition_cProductId.getData() + 
7		"?accountId=-1&nestedFields=categories,productSpecifications,skus&skus.accountId=-1&skus.currencyCode=USD" 
8
9 
10	catalogName = product.catalogName!"" 
11	categories = product.categories![] 
12	productSpecifications = product.productSpecifications![] 
13 
14	liferayVersions = productSpecifications?filter(item -> stringUtil.equals(item.specificationKey, "liferay-version")) 
15	platformOffering = categories?filter(item -> stringUtil.equals(item.vocabulary, "marketplace-liferay-platform-offering")) 
16
17 
18<#assign publisherDetailsResponse = restClient.get("/c/publisherdetailses?filter=publisherName eq '${catalogName}'") /> 
19 
20<#if publisherDetailsResponse.items?has_content> 
21	<#assign 
22		publisherDetails = publisherDetailsResponse.items[0] 
23		profileImageURL = publisherDetails.publisherProfileImage?replace("https://", "http://") 
24	/> 
25</#if> 
26 
27<#assign 
28	cpuValue = getSpecificationValue("cpu") 
29	developerName = getSpecificationValue("developer-name", catalogName) 
30	publisherURL = (getSpecificationValue("publisherwebsiteurl")?trim?replace(" ", ""))!"" 
31	ramValue = getSpecificationValue("ram") 
32	supportEmail = getSpecificationValue("supportemailaddress") 
33	supportPhone = getSpecificationValue("supportphone") 
34	type = getSpecificationValue("type")?lower_case 
35
36<@section title = languageUtil.get(locale, "developer")> 
37	<a class = "bg-neutral-8" href = "/?developer-name=${developerName}"> 
38		${developerName} 
39	</a> 
40</@section> 
41 
42<@section title = languageUtil.get(locale, "publisher-date", "Publisher Date")> 
43	<#setting date_format = "MMMM d, yyyy"> 
44 
45	<#if CPDefinition_displayDate.getData()?has_content> 
46		<p>${CPDefinition_displayDate.getData()?date("MM/dd/yy h:mm a")?string("MMMM d, yyyy")}</p> 
47	</#if> 
48</@section> 
49 
50<@section title = languageUtil.get(locale, "deployment-method", "Deployment Method")> 
51	<#list platformOffering as offering> 
52		<p>${offering.name}</p> 
53	</#list> 
54</@section> 
55 
56<@section title = languageUtil.get(locale, "app-type", "App Type")> 
57 	<#if type == 'client-extension'> Client Extension </#if> 
58 	<#if type == 'cloud'> Cloud </#if> 
59 	<#if type == 'composite-app'> Composite App </#if> 
60 	<#if type == 'dxp'> DXP </#if> 
61 	<#if type == 'low-code-configuration'> Low Code Configuration </#if> 
62</@section> 
63 
64<@section title = languageUtil.get(locale, "version")> 
65	${getSpecificationValue("latest-version", "1.0.0")} 
66</@section> 
67 
68<#if liferayVersions?has_content> 
69	<@section title = languageUtil.get(locale, "supported-versions", "Supported Versions")> 
70		<#list liferayVersions as version> 
71			${version.value}<#if version?has_next>, </#if> 
72		</#list> 
73	</@section> 
74</#if> 
75 
76<#if cpuValue?has_content> 
77	<@section title = languageUtil.get(locale, "resource-requirements", "Resource Requirements")> 
78		<p> 
79			<#if cpuValue?has_content> 
80				${cpuValue} 
81				<#assign cpuNumber = cpuValue?number?default(0) /> 
82				<#if cpuValue?eval gt 1> 
83					CPUS 
84				</#if> 
85				<#if cpuValue?eval lt 2> 
86					CPU 
87				</#if> 
88			</#if>, <#if ramValue?has_content>${ramValue} GB RAM</#if> 
89		</p> 
90	</@section> 
91</#if> 
92 
93<@section title = languageUtil.get(locale, "standard-price", "Standard Price")> 
94	<div> 
95		<#assign purchasableSkus = [] /> 
96 
97		<#list product.skus as sku> 
98			<#if sku.purchasable?? && sku.purchasable> 
99				<#assign purchasableSkus = purchasableSkus + [sku] /> 
100			</#if> 
101		</#list> 
102 
103		<#assign standardSku = {} /> 
104 
105		<#list purchasableSkus as sku> 
106			<#assign matched = false /> 
107 
108			<#list sku.skuOptions as opt> 
109				<#if stringUtil.equals(opt.skuOptionValueKey, "standard")> 
110					<#assign 
111						matched = true 
112						standardSku = sku 
113					/> 
114 
115					<#break> 
116				</#if> 
117			</#list> 
118			<#if matched><#break></#if> 
119		</#list> 
120 
121		<#if standardSku.price?? && standardSku.price.price?eval gt 0> 
122			<div class="bg-neutral-8">${standardSku.price.priceFormatted!""}</div> 
123		<#else> 
124			${languageUtil.get(locale, "free", "Free")} 
125		</#if> 
126	</div> 
127</@section> 
128 
129<@section title = languageUtil.get(locale, "help-and-support", "Help and Support")> 
130	<div class="d-flex flex-column mt-4"> 
131		<div class="d-flex"> 
132			<span class="help-and-support-link-icon"> 
133				<@clay["icon"] symbol="document" /> 
134			</span> 
135 
136			<a class="d-flex w-100 justify-content-between help-and-support-link" href="https://www.liferay.com/en/legal/marketplace-terms-of-service" target="_blank"> 
137				<span class="copy-text ml-1 help-and-support-link"> 
138					${languageUtil.get(locale, "terms-and-conditions", "Terms & Conditions")} 
139				</span> 
140 
141				<@clay["icon"] 
142					className="help-and-support-link-arrow link-arrow ml-auto" 
143					height="12" 
144					symbol="angle-right" 
145				/> 
146			</a> 
147		</div> 
148 
149		<div class="d-flex"> 
150			<span class="help-and-support-link-icon"> 
151				<@clay["icon"] symbol="document" /> 
152			</span> 
153 
154			<a class="d-flex w-100 justify-content-between help-and-support-link" href="javascript:void(0)" onClick="openModal()"> 
155				<span class="copy-text ml-1 help-and-support-link"> 
156					${languageUtil.get(locale, "publisher-contact-info", "Publisher Contact Info")} 
157				</span> 
158 
159				<@clay["icon"] 
160					className="help-and-support-link-arrow link-arrow ml-auto" 
161					height="12" 
162					symbol="angle-right" 
163				/> 
164			</a> 
165		</div> 
166	</div> 
167</@section> 
168 
169<@section 
170	showLine = false 
171	title = languageUtil.get(locale, "share-link") 
172
173	<a class="align-items-center copy-text d-flex font-weight-bold ml-1 text-decoration-none text-primary" href="#copy-share-link" onclick="copyToClipboard(Liferay.ThemeDisplay.getCanonicalURL())"> 
174		<span class="help-and-support-link-icon mr-1"> 
175			<@clay["icon"] symbol="link" /> 
176		</span> 
177		Copy & Share 
178	</a> 
179</@section> 
180 
181<#function getSpecificationValue key default=""> 
182	<#local spec = productSpecifications?filter(productSpecification -> 
183		stringUtil.equals(productSpecification.specificationKey, key)) /> 
184 
185	<#return (spec?first.value)!default /> 
186</#function> 
187 
188<#macro section 
189	title 
190	showLine=true 
191
192	<p> 
193		<strong>${title}</strong> 
194	</p> 
195 
196	<div> 
197		<#nested> 
198	</div> 
199 
200	<#if showLine> 
201		<hr /> 
202	</#if> 
203</#macro> 
204 
205<script ${nonceAttribute}> 
206	function modalBody() { 
207		return ` 
208			<div class="align-items-center d-flex flex-row mb-3"> 
209				<span class="align-items-center d-flex justify-content-center modal-icon-background mr-3" style="background: #E2E2E4; border-radius:50%; height:40px; overflow:hidden; width:40px;"> 
210					<#if profileImageURL?? && profileImageURL?length gt 0> 
211						<img src="${profileImageURL}" alt="Publisher Image" style="width: 100%; height: 100%; object-fit: cover; border-radius: 50%;" /> 
212					<#else> 
213						<@clay["icon"] 
214							style="fill:#6B6C7E;" 
215							symbol="picture" 
216						/> 
217					</#if> 
218				</span> 
219 
220				<div class="d-flex flex-column"> 
221					<h3 class="font-weight-bold mb-0"> 
222						${catalogName} 
223					</h3> 
224				</div> 
225			</div> 
226 
227			<#if publisherURL?has_content> 
228				<div class="align-items-center d-flex flex-row mb-3"> 
229				<span class="align-items-center d-flex justify-content-center modal-icon-background mr-3" style="background: #E2E2E4; border-radius:50%; height:40px; overflow:hidden; width:40px;"> 
230						<@clay["icon"] 
231							style="fill:#6B6C7E;" 
232							symbol="globe" 
233						/> 
234					</span> 
235 
236					<div class="d-flex flex-column"> 
237						<span class="text-black-50">${languageUtil.get(locale, "publisher-website", "Publisher Website")}</span> 
238 
239						<a href="${publisherURL}" target="_blank" class="font-weight-bold"> 
240							${publisherURL} 
241						</a> 
242					</div> 
243				</div> 
244			</#if> 
245 
246			<#if supportEmail?has_content> 
247				<div class="align-items-center d-flex flex-row mb-3"> 
248					<span class="align-items-center d-flex justify-content-center modal-icon-background mr-3" style="background: #E2E2E4; border-radius:50%; height:40px; overflow:hidden; width:40px;"> 
249						<@clay["icon"] style="fill:#6B6C7E;"symbol="envelope-closed" /> 
250					</span> 
251 
252					<div class="d-flex flex-column"> 
253						<span class="text-black-50">${languageUtil.get(locale, "support-email", "Support Email")}</span> 
254 
255						<a class="font-weight-bold" href="mailto:${supportEmail}" target="_blank"> 
256							${supportEmail} 
257						</a> 
258					</div> 
259				</div> 
260			</#if> 
261 
262			<#if supportPhone?has_content> 
263				<div class="d-flex flex-row align-items-center mb-3"> 
264					<span class="align-items-center d-flex justify-content-center modal-icon-background mr-3" style="background: #E2E2E4; border-radius:50%; height:40px; overflow:hidden; width:40px;"> 
265						<@clay["icon"] 
266							style="fill:#6B6C7E;" 
267							symbol="phone" 
268						/> 
269					</span> 
270 
271					<div class="d-flex flex-column"> 
272						<span class="text-black-50">${languageUtil.get(locale, "phone")}</span> 
273 
274						<a class="font-weight-bold" href="tel:${supportPhone}" target="_blank"> 
275							${supportPhone} 
276						</a> 
277					</div> 
278				</div> 
279			</#if> 
280		`; 
281
282 
283	function openModal() { 
284		Liferay.Util.openModal({ 
285			bodyHTML: modalBody(), 
286			center: true, 
287			headerHTML: "<h2>Publisher Support Contact Info</h2>", 
288			size: "md" 
289		}); 
290
291</script> 
292 
293<script ${nonceAttribute}> 
294	function copyToClipboard(text) { 
295		if (navigator && navigator.clipboard && navigator.clipboard.writeText) { 
296			navigator.clipboard.writeText(text); 
297 
298			Liferay.Util.openToast({ message: "Copied link to the clipboard" }); 
299
300
301</script> 
302 
303<style ${nonceAttribute}> 
304	.copy-text { 
305		color: #282934; 
306		font-size: 16px; 
307
308 
309	.help-and-support-link { 
310		color: inherit; 
311		text-decoration: none; 
312
313 
314	.help-and-support-link-arrow { 
315		fill: rgb(133, 140, 148); 
316
317 
318	.help-and-support-link:hover { 
319		color: inherit; 
320		text-decoration: none; 
321
322 
323	.help-and-support-link-icon { 
324		color: rgb(133, 140, 148); 
325
326 
327	.help-and-support-svg mask, 
328	.link-arrow mask { 
329		mask-type: alpha; 
330
331</style> 
DEVELOPER
21/11/24 18:22
Published date
21/11/24 18:22
Published Date
21/11/24 18:22
SUPPORTED OFFERINGS
Liferay PaaS
Supported Versions
6.2
Resource Requirements
Edition
CE
PRICE
Paid
help & support
SHARE LINK
Copy & Share

HTML Example

A paragraph is a self-contained unit of a discourse in writing dealing with a particular point or idea. Paragraphs are usually an expected part of formal writing, used to organize longer prose.