2sic / 2sxc-content-app Goto Github PK
View Code? Open in Web Editor NEWthe 2sxc default content app with templates supporting multiple css using Koi
License: MIT License
the 2sxc default content app with templates supporting multiple css using Koi
License: MIT License
I'm submitting a Content-Type feature request ...
Current behavior
When you select Content - Image and choose either Banner Narrow (for headers) OR Banner - Wide (larger headers) it now comes with the alert message hardcoded in the template with no way to edit that message out of the box.
Enhanced behavior
When choosing either option above, it should be possible to turn the alert message on/off. In addition, one should be able to edit the text field for the alert right away.
Since these two views are under the Content-Type Image, I didn't expect to find text. However, I think the alert message is a wonderful addition to these header banners and that simply making them turn on/off would be nice.
Making a custom view per project seems redundant and with how quickly sometimes a Client/Content Manager needs certain alert messages on their website it would be a great feature for them to do without waiting for a developer to make a custom view and enter the alert message.
My environment
Content App - Version 13.1.0
DNN - 09.10.02
[x] bug report
[x] Razor templating
You can see the problem in the Content App v16.x, bs4/Content/Text and Image.Part-Image.cshtml
line 35
33 <figure class='@(imgItem.Presentation.ImageLightbox != false ? "effect-zoom" : "")'>
34 @if (Text.Has(pic.Alt)) {
35 <figcaption class="pt-1 px-4 pb-4 text-white">@pic.Alt</figcaption>
36 }
37 @pic
38 </figure>
Or the bs5 version.
Since on Line 18 in .Picture(), sets imgAltFallback: imgItem.EntityTitle
, when you get to line 35 above, the fallback has already set pic.Alt to the title. So you unexpectedly get a caption over the image, repeating the content's Title.
I have a recently deployed project that started life with DNN 9.04.x, 2sxc 10.x, and Content App 3.03.00. The site is now running DNN 9.04.04 and 2sxc 10.24.
How do I upgrade the Content App to the new v10 release? We've already got a significant amount of content deploy, almost entirely using the Content App:
If there is an automatic way, great. If not, can you outline the steps necessary to get there? Thanks in advance!!
If using a non-Bootstrap theme, but your theme's CSS framework uses similar rules, those rule are overridden by some of the Bootstrap rules that contain !important. You can see from the below screenshot how a .bg-primary
rule with a higher priority is being overridden by .bg-primary
rule of lower priority but has !important. This rule is coming from Bootstrap's _background-varient.css file
.
I believe that the _backgorund-varient.css
file is being called/imported by stackpath.bootstrapcdn...
which in turn is being referenced in \Portals\0\2sxc\Content\.data\app.xml
I would expect that the bootstrapcdn not be called/loaded when the site's/pages's theme does not use Bootstrap as the CSS framework.
EDIT: FYI, I am creating Tailwind 2.0 (tlw2) version of the default 2sxsc content templates to contribute to 2sxc based on this conversation: 2sic/connect.koi#13
EDIT 2: Attached a Tailwind theme based on Bootstrap 4 Instant theme, in case you need a tlw2 theme for testing.
Tailwind 2 Instant_1.0.0_install.zip
...this is a temp file which is sometimes generated on git-errors.
We have a project we just started last week. At install we had Dnn 9.10.1, 2sxc 11.22.1 LTS and the Content App 11.0.6.
We are pretty excited about 2sxc v12 and (did a backup then) installed that. But now how to we get the Content App from 11.0.6 to 12.latest? It was installed as part of our deploy process, but other than the 1 Content module, its completely not used at all, untouched, not a single CT record added, nothing modified/used at all.
Is there a logical way to upgrade?
Is there a safe way to delete the 11.0.6 version of the Content App and then install 12.5.2?
If no and no, is there some way to instead install 12.5.2 and have it work side by side?
I did reread this and issue #8 but didn't find anything helpful.
https://github.com/2sic/2sxc-content-app/wiki/Installation-Instructions
If you have an older version of 2sxc and the Content App installed. You then easily upgrade 2sxc the normal way. But how would you "upgrade" the Content App to the latest version?
The Views included for Google Maps in Content App have the "de" language hardcoded when building the Directions URL. See below.
... .Replace(" ", "+")+"&saddr=&f=d&hl=de&ie=UTF8&z=16
^^^
DNN was deployed at 9.06.01 and recently upgraded to 9.07.02
2sxc was deployed at 11.04 and recently updated to 11.06.01
2sxc Content App was installed in Aug, v11.03
I believe exports were working prior to upgrading DNN and 2sxc (yest), which is why I mention it. Exports for all the other Content-Types work fine, its just Locations. So maybe it has something to do with the new "gps" input type? Although it does actually appear that the new "GPS Coordinates" field has the space in there for BOTH the name and the label.
With a Content module on the page, go to Configure App (admin), Data tab. On the "Location / address" row, click the export button. Change the Export Data option to "No, just..." (it fails with both, but I am just pointing out that the error is not in the data, its with the schema):
Opens in a new tab, the URL is
.../api/2sxc/eav/ContentExport/ExportContent?appId=2&language=&defaultLanguage=en-us&contentType=3168c0b7-c5b9-4aa8-9ada-773890339e58&recordExport=Blank&resourcesReferences=Link&languageReferences=Link
And this is the output
{"Message":"Bad Request","ExceptionType":"System.Xml.XmlException","ExceptionMessage":"The ' ' character, hexadecimal value 0x20, cannot be included in a name."}
If its any help, I also did the "Export Type Definition as Json", which works, and got this
{
"_": { "V": 1 },
"ContentType": {
"Id": "3168c0b7-c5b9-4aa8-9ada-773890339e58",
"Name": "Location",
"Scope": "2SexyContent",
"Description": "Location / Address",
"Attributes": [
{
"Name": "Company",
"Type": "String",
"InputType": "string-default",
"IsTitle": true,
"Metadata": [
{
"Id": 804,
"Version": 1,
"Guid": "4e1dc733-fcd8-4c5b-b16a-a0f207437a24",
"Type": { "Name": "@All", "Id": "@All" },
"Attributes": {
"String": {
"CustomJavaScript": { "*": "" },
"DefaultValue": { "*": "" },
"InputType": { "*": "string-default" },
"Name": { "*": "Title / company" },
"Notes": {
"*": "<p>Usually the company name, but it could also be another title like <em>Construction Site</em></p>"
},
"ValidationRegExJavaScript": { "*": "" }
},
"Entity": { "Errors": { "*": [] }, "Warnings": { "*": [] } },
"Boolean": { "Disabled": { "*": false }, "Required": { "*": true }, "VisibleInEditUI": { "*": true } }
},
"Owner": "dnn:userid=2"
},
{
"Id": 805,
"Version": 1,
"Guid": "721b09a6-7814-49a4-b85f-2cea2ad11791",
"Type": { "Name": "@String", "Id": "@String" },
"Attributes": { "String": { "DropdownValues": { "*": "" }, "InputType": { "*": "" } } },
"Owner": "dnn:userid=2"
},
{
"Id": 806,
"Version": 1,
"Guid": "fbcccbe9-7af1-48b8-81ff-b8415c5e258c",
"Type": { "Name": "@string-default", "Id": "@string-default" },
"Attributes": {},
"Owner": "dnn:userid=2"
}
]
},
{
"Name": "Description",
"Type": "String",
"InputType": "string-wysiwyg",
"IsTitle": false,
"Metadata": [
{
"Id": 807,
"Version": 1,
"Guid": "0046030d-25d7-4584-aa43-bb08f0df7a84",
"Type": { "Name": "@All", "Id": "@All" },
"Attributes": {
"String": {
"CustomJavaScript": { "*": "" },
"DefaultValue": { "*": "" },
"InputType": { "*": "string-wysiwyg" },
"Name": { "*": "Short description" },
"Notes": { "*": "<p>Address Description - will be shown in some templates.</p>" },
"ValidationRegExJavaScript": { "*": "" }
},
"Entity": { "Errors": { "*": [] }, "Warnings": { "*": [] } },
"Boolean": { "Disabled": { "*": false }, "Required": { "*": false }, "VisibleInEditUI": { "*": true } }
},
"Owner": "dnn:userid=2"
},
{
"Id": 808,
"Version": 1,
"Guid": "78d64ac4-6050-41ec-b98c-8a8f8249983d",
"Type": { "Name": "@String", "Id": "@String" },
"Attributes": {
"String": { "DropdownValues": { "*": "" }, "InputType": { "*": "wysiwyg" } },
"Number": { "RowCount": { "*": 1.0 } }
},
"Owner": "dnn:userid=2"
},
{
"Id": 809,
"Version": 1,
"Guid": "6e8f971d-486f-4897-8354-20d8118c3411",
"Type": { "Name": "@string-wysiwyg", "Id": "@string-wysiwyg" },
"Attributes": {},
"Owner": "dnn:userid=2"
}
]
},
{
"Name": "AddressGroup",
"Type": "Empty",
"InputType": "empty-default",
"IsTitle": false,
"Metadata": [
{
"Id": 810,
"Version": 1,
"Guid": "c05004a7-7bc4-4724-a062-4da34d45a3de",
"Type": { "Name": "@All", "Id": "@All" },
"Attributes": {
"String": {
"DefaultValue": { "*": "" },
"InputType": { "*": "empty-default" },
"Name": { "*": "Address" },
"Notes": { "*": "" },
"ValidationRegExJavaScript": { "*": "" }
},
"Entity": { "Errors": { "*": [] }, "Warnings": { "*": [] } },
"Boolean": { "Disabled": { "*": false }, "Required": { "*": false }, "VisibleInEditUI": { "*": true } }
},
"Owner": "dnn:userid=2"
},
{
"Id": 811,
"Version": 1,
"Guid": "a969cfe0-08c1-43ae-a128-dc704a733429",
"Type": { "Name": "@empty-default", "Id": "@empty-default" },
"Attributes": { "Boolean": { "DefaultCollapsed": { "*": false } } },
"Owner": "dnn:userid=2"
}
]
},
{
"Name": "Street",
"Type": "String",
"InputType": "string-default",
"IsTitle": false,
"Metadata": [
{
"Id": 812,
"Version": 1,
"Guid": "4ff8c22b-2b90-4616-957a-aaae56eb5e7a",
"Type": { "Name": "@All", "Id": "@All" },
"Attributes": {
"String": {
"DefaultValue": { "*": "" },
"InputType": { "*": "string-default" },
"Name": { "*": "Street" },
"Notes": { "*": "" },
"ValidationRegExJavaScript": { "*": "" }
},
"Entity": { "Errors": { "*": [] }, "Warnings": { "*": [] } },
"Boolean": { "Disabled": { "*": false }, "Required": { "*": false }, "VisibleInEditUI": { "*": true } }
},
"Owner": "dnn:userid=2"
},
{
"Id": 813,
"Version": 1,
"Guid": "9dd6de75-a572-43e9-bd19-beedc8cfa384",
"Type": { "Name": "@String", "Id": "@String" },
"Attributes": {},
"Owner": "dnn:userid=2"
},
{
"Id": 814,
"Version": 1,
"Guid": "965d6148-8376-4fec-af51-c5c94beda097",
"Type": { "Name": "@string-default", "Id": "@string-default" },
"Attributes": { "Number": { "RowCount": { "*": 3.0 } } },
"Owner": "dnn:userid=2"
}
]
},
{
"Name": "ZipCode",
"Type": "String",
"InputType": "string-default",
"IsTitle": false,
"Metadata": [
{
"Id": 815,
"Version": 1,
"Guid": "4c5645ec-c1d7-4075-b47b-22288af85777",
"Type": { "Name": "@All", "Id": "@All" },
"Attributes": {
"String": {
"DefaultValue": { "*": "" },
"InputType": { "*": "string-default" },
"Name": { "*": "Zip Code" },
"Notes": { "*": "" },
"ValidationRegExJavaScript": { "*": "" }
},
"Entity": { "Errors": { "*": [] }, "Warnings": { "*": [] } },
"Boolean": { "Disabled": { "*": false }, "Required": { "*": false }, "VisibleInEditUI": { "*": true } }
},
"Owner": "dnn:userid=2"
},
{
"Id": 816,
"Version": 1,
"Guid": "654bcf6a-e2dc-42f4-b346-fca7705b7780",
"Type": { "Name": "@String", "Id": "@String" },
"Attributes": {},
"Owner": "dnn:userid=2"
},
{
"Id": 817,
"Version": 1,
"Guid": "cb573b32-1fdd-49b5-914e-aa09532ef1f3",
"Type": { "Name": "@string-default", "Id": "@string-default" },
"Attributes": {},
"Owner": "dnn:userid=2"
}
]
},
{
"Name": "City",
"Type": "String",
"InputType": "string-default",
"IsTitle": false,
"Metadata": [
{
"Id": 818,
"Version": 1,
"Guid": "7facfe78-d61e-4af9-96a7-ee3e596bb3bb",
"Type": { "Name": "@All", "Id": "@All" },
"Attributes": {
"String": {
"DefaultValue": { "*": "" },
"InputType": { "*": "string-default" },
"Name": { "*": "City" },
"Notes": { "*": "" },
"ValidationRegExJavaScript": { "*": "" }
},
"Entity": { "Errors": { "*": [] }, "Warnings": { "*": [] } },
"Boolean": { "Disabled": { "*": false }, "Required": { "*": true }, "VisibleInEditUI": { "*": true } }
},
"Owner": "dnn:userid=2"
},
{
"Id": 819,
"Version": 1,
"Guid": "b2d88097-c1b8-4406-aab0-694fb9237822",
"Type": { "Name": "@String", "Id": "@String" },
"Attributes": {},
"Owner": "dnn:userid=2"
},
{
"Id": 820,
"Version": 1,
"Guid": "c9d85c49-0b5a-4e73-a3bc-069f46f39fb5",
"Type": { "Name": "@string-default", "Id": "@string-default" },
"Attributes": {},
"Owner": "dnn:userid=2"
}
]
},
{
"Name": "Country",
"Type": "String",
"InputType": "string-default",
"IsTitle": false,
"Metadata": [
{
"Id": 821,
"Version": 1,
"Guid": "0c44ba47-fbba-4412-b173-526e888d653c",
"Type": { "Name": "@All", "Id": "@All" },
"Attributes": {
"String": {
"DefaultValue": { "*": "" },
"InputType": { "*": "string-default" },
"Name": { "*": "Country" },
"Notes": { "*": "" },
"ValidationRegExJavaScript": { "*": "" }
},
"Entity": { "Errors": { "*": [] }, "Warnings": { "*": [] } },
"Boolean": { "Disabled": { "*": false }, "Required": { "*": false }, "VisibleInEditUI": { "*": true } }
},
"Owner": "dnn:userid=2"
},
{
"Id": 822,
"Version": 1,
"Guid": "1c9b72ef-82e0-4603-88a5-9a843aa25bb2",
"Type": { "Name": "@String", "Id": "@String" },
"Attributes": {},
"Owner": "dnn:userid=2"
},
{
"Id": 823,
"Version": 1,
"Guid": "b3e9781d-e321-4030-9ea7-3a3da60abc62",
"Type": { "Name": "@string-default", "Id": "@string-default" },
"Attributes": {},
"Owner": "dnn:userid=2"
}
]
},
{
"Name": "CommunicationGroup",
"Type": "Empty",
"InputType": "empty-default",
"IsTitle": false,
"Metadata": [
{
"Id": 824,
"Version": 1,
"Guid": "4852bc54-8918-4a62-8440-673cced73c3c",
"Type": { "Name": "@All", "Id": "@All" },
"Attributes": {
"String": {
"DefaultValue": { "*": "" },
"InputType": { "*": "empty-default" },
"Name": { "*": "Contact Information" },
"Notes": {
"*": "<p>Enter all the communication methods here. Note that you could add more fields like twitter, facebook etc. but that would need the help of your web designer. </p>"
},
"ValidationRegExJavaScript": { "*": "" }
},
"Entity": { "Errors": { "*": [] }, "Warnings": { "*": [] } },
"Boolean": { "Disabled": { "*": false }, "Required": { "*": false }, "VisibleInEditUI": { "*": true } }
},
"Owner": "dnn:userid=2"
},
{
"Id": 825,
"Version": 1,
"Guid": "9ff85ead-b11f-4dc0-ae7e-58fd29193671",
"Type": { "Name": "@empty-default", "Id": "@empty-default" },
"Attributes": { "Boolean": { "DefaultCollapsed": { "*": true } } },
"Owner": "dnn:userid=2"
}
]
},
{
"Name": "Tel",
"Type": "String",
"InputType": "string-default",
"IsTitle": false,
"Metadata": [
{
"Id": 826,
"Version": 1,
"Guid": "43c3afeb-b328-46d5-b62f-c8bbd055074e",
"Type": { "Name": "@All", "Id": "@All" },
"Attributes": {
"String": {
"DefaultValue": { "*": "" },
"InputType": { "*": "string-default" },
"Name": { "*": "Telephone" },
"Notes": { "*": "" },
"ValidationRegExJavaScript": { "*": "" }
},
"Entity": { "Errors": { "*": [] }, "Warnings": { "*": [] } },
"Boolean": { "Disabled": { "*": false }, "Required": { "*": false }, "VisibleInEditUI": { "*": true } }
},
"Owner": "dnn:userid=2"
},
{
"Id": 827,
"Version": 1,
"Guid": "503d166e-d776-4569-ac10-6397fc0426db",
"Type": { "Name": "@String", "Id": "@String" },
"Attributes": {},
"Owner": "dnn:userid=2"
},
{
"Id": 828,
"Version": 1,
"Guid": "61c364d1-b625-4b0c-baf4-d523a5dc8e4b",
"Type": { "Name": "@string-default", "Id": "@string-default" },
"Attributes": {},
"Owner": "dnn:userid=2"
}
]
},
{
"Name": "Fax",
"Type": "String",
"InputType": "string-default",
"IsTitle": false,
"Metadata": [
{
"Id": 829,
"Version": 1,
"Guid": "b781bbce-153e-44ea-8231-89b6cb16e197",
"Type": { "Name": "@All", "Id": "@All" },
"Attributes": {
"String": {
"DefaultValue": { "*": "" },
"InputType": { "*": "string-default" },
"Name": { "*": "Fax" },
"Notes": { "*": "" },
"ValidationRegExJavaScript": { "*": "" }
},
"Entity": { "Errors": { "*": [] }, "Warnings": { "*": [] } },
"Boolean": { "Disabled": { "*": false }, "Required": { "*": false }, "VisibleInEditUI": { "*": true } }
},
"Owner": "dnn:userid=2"
},
{
"Id": 830,
"Version": 1,
"Guid": "3b9c3aca-b810-4af5-9f3e-2a4a184ba89c",
"Type": { "Name": "@String", "Id": "@String" },
"Attributes": {},
"Owner": "dnn:userid=2"
},
{
"Id": 831,
"Version": 1,
"Guid": "df98e398-b28b-4dbe-96c1-3d2da2b27fb2",
"Type": { "Name": "@string-default", "Id": "@string-default" },
"Attributes": {},
"Owner": "dnn:userid=2"
}
]
},
{
"Name": "Mail",
"Type": "String",
"InputType": "string-default",
"IsTitle": false,
"Metadata": [
{
"Id": 832,
"Version": 1,
"Guid": "a0128922-eb99-4d75-8f2c-ed675ea4bcf2",
"Type": { "Name": "@All", "Id": "@All" },
"Attributes": {
"String": {
"DefaultValue": { "*": "" },
"InputType": { "*": "string-default" },
"Name": { "*": "Email" },
"Notes": { "*": "" },
"ValidationRegExJavaScript": { "*": "" }
},
"Entity": { "Errors": { "*": [] }, "Warnings": { "*": [] } },
"Boolean": { "Disabled": { "*": false }, "Required": { "*": false }, "VisibleInEditUI": { "*": true } }
},
"Owner": "dnn:userid=2"
},
{
"Id": 833,
"Version": 1,
"Guid": "b91da03d-f7ba-46f0-b35a-927cf9e192e8",
"Type": { "Name": "@String", "Id": "@String" },
"Attributes": {},
"Owner": "dnn:userid=2"
},
{
"Id": 834,
"Version": 1,
"Guid": "cb7571e3-1af4-4b02-a8b5-4e7430ead7ce",
"Type": { "Name": "@string-default", "Id": "@string-default" },
"Attributes": {},
"Owner": "dnn:userid=2"
}
]
},
{
"Name": "GPS Coordinates",
"Type": "Empty",
"InputType": "empty-default",
"IsTitle": false,
"Metadata": [
{
"Id": 835,
"Version": 1,
"Guid": "1ea720cc-de28-406c-a5cd-0cef7ce919be",
"Type": { "Name": "@All", "Id": "@All" },
"Attributes": {
"String": {
"DefaultValue": { "*": "" },
"InputType": { "*": "empty-default" },
"Name": { "*": "GPS Coordinates" },
"Notes": {
"*": "<p>Choose the GPS coordinates below. Note that it's much easier if you already entered an address above, as the pin will automatically jump to that location. </p>"
},
"ValidationRegExJavaScript": { "*": "" }
},
"Entity": { "Errors": { "*": [] }, "Warnings": { "*": [] } },
"Boolean": { "Disabled": { "*": false }, "Required": { "*": false }, "VisibleInEditUI": { "*": true } }
},
"Owner": "dnn:userid=2"
},
{
"Id": 836,
"Version": 1,
"Guid": "1a78a267-5d52-43a0-bdcf-cab55231cef4",
"Type": { "Name": "@empty-default", "Id": "@empty-default" },
"Attributes": { "Boolean": { "DefaultCollapsed": { "*": true } } },
"Owner": "dnn:userid=2"
}
]
},
{
"Name": "GPS",
"Type": "Custom",
"InputType": "custom-gps",
"IsTitle": false,
"Metadata": [
{
"Id": 837,
"Version": 1,
"Guid": "5ec0fd16-8e5a-40e6-8430-816e838f48d9",
"Type": { "Name": "@All", "Id": "@All" },
"Attributes": {
"String": {
"CustomJavaScript": { "*": "" },
"DefaultValue": { "*": "" },
"InputType": { "*": "custom-gps" },
"Name": { "*": "GPS" },
"Notes": { "*": "" },
"ValidationRegExJavaScript": { "*": "" }
},
"Entity": { "Errors": { "*": [] }, "Warnings": { "*": [] } },
"Boolean": { "Disabled": { "*": false }, "Required": { "*": false }, "VisibleInEditUI": { "*": true } }
},
"Owner": "dnn:userid=2"
},
{
"Id": 838,
"Version": 1,
"Guid": "7a428d02-9603-4d79-8004-e952ed1fa0e0",
"Type": { "Name": "@custom-gps", "Id": "@custom-gps" },
"Attributes": {
"String": {
"Address Mask": { "*": "" },
"AddressMask": { "*": "[Street], [ZipCode]-[City]" },
"LatField": { "*": "" },
"LongField": { "*": "" }
}
},
"Owner": "dnn:userid=2"
}
]
},
{
"Name": "Directions",
"Type": "Empty",
"InputType": "empty-default",
"IsTitle": false,
"Metadata": [
{
"Id": 839,
"Version": 1,
"Guid": "fa92d231-2dc4-4282-bcc9-e9a370bd1263",
"Type": { "Name": "@All", "Id": "@All" },
"Attributes": {
"String": {
"DefaultValue": { "*": "" },
"InputType": { "*": "empty-default" },
"Name": { "*": "Driving Directions" },
"Notes": { "*": "" },
"ValidationRegExJavaScript": { "*": "" }
},
"Entity": { "Errors": { "*": [] }, "Warnings": { "*": [] } },
"Boolean": { "Disabled": { "*": false }, "Required": { "*": false }, "VisibleInEditUI": { "*": true } }
},
"Owner": "dnn:userid=2"
},
{
"Id": 840,
"Version": 1,
"Guid": "2b20ddb8-a5bc-4875-923d-ff99ba08e113",
"Type": { "Name": "@empty-default", "Id": "@empty-default" },
"Attributes": { "Boolean": { "DefaultCollapsed": { "*": true } } },
"Owner": "dnn:userid=2"
}
]
},
{
"Name": "LabelDirections",
"Type": "String",
"InputType": "string-default",
"IsTitle": false,
"Metadata": [
{
"Id": 841,
"Version": 1,
"Guid": "509d82ac-996f-45bd-93ef-85239d78a3c4",
"Type": { "Name": "@All", "Id": "@All" },
"Attributes": {
"String": {
"DefaultValue": { "*": "Directions" },
"InputType": { "*": "string-default" },
"Name": { "*": "Link label" },
"Notes": {
"*": "<p>This label is used for the link bringing the user to google maps in from-to mode.</p>"
},
"ValidationRegExJavaScript": { "*": "" }
},
"Entity": { "Errors": { "*": [] }, "Warnings": { "*": [] } },
"Boolean": { "Disabled": { "*": false }, "Required": { "*": false }, "VisibleInEditUI": { "*": true } }
},
"Owner": "dnn:userid=2"
},
{
"Id": 842,
"Version": 1,
"Guid": "6d3cdc3e-58ce-46b7-a5a9-0ee046640ce4",
"Type": { "Name": "@String", "Id": "@String" },
"Attributes": {},
"Owner": "dnn:userid=2"
},
{
"Id": 843,
"Version": 1,
"Guid": "a7ff2b0d-cde0-4660-8cff-b914fedb6625",
"Type": { "Name": "@string-default", "Id": "@string-default" },
"Attributes": {},
"Owner": "dnn:userid=2"
}
]
}
],
"Metadata": [
{
"Id": 928,
"Version": 1,
"Guid": "cb492860-4f4b-4841-90bb-15107d97baf5",
"Type": { "Name": "ContentType", "Id": "ContentType" },
"Attributes": {
"String": {
"Description": { "*": "For address with map" },
"EditInstructions": { "*": "" },
"Label": { "*": "Location / address" },
"Notes": { "*": "" }
},
"Hyperlink": {
"Icon": { "*": "file:132" },
"Link": { "*": "https://github.com/2sic/2sxc-content-bootstrap3/wiki/Help" }
}
},
"Owner": "dnn:userid=2",
"For": { "Target": "ContentType", "String": "3168c0b7-c5b9-4aa8-9ada-773890339e58" }
}
]
}
}
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.