Giter Site home page Giter Site logo

2sic / app-mobius-forms Goto Github PK

View Code? Open in Web Editor NEW
8.0 8.0 4.0 3.81 MB

Simple jQuery based 2sxc form - to use immediately or to modify as needed. Multi-language, simple, with Recaptcha

License: MIT License

C# 54.53% JavaScript 1.69% HTML 32.01% TypeScript 9.16% SCSS 2.63%

app-mobius-forms's Introduction

Mobius Forms 5 App for .net CMSs

This is a 2sxc App for DNN โ˜ข๏ธ and Oqtane ๐Ÿ’ง

This Mobius Forms App is an add-on to DNN. It is the most customizable Form extension in the DNN ecosystem.

Aspect Status Comments or Version
2sxc โœ… requires 2sxc v16.1
Dnn โœ… For v9.6.1
Oqtane 2 โœ… Requires v3.04
No jQuery ?
Live Demo โž–
Install Checklist โœ… See [Installation] on azing.org
Source & License โœ… included, ISC/MIT
App Catalog โœ… See app catalog
Screenshots โœ… See app catalog
Best Practices โœ… Uses v16.01 conventions
Bootstrap 3 โœ… optimized
Bootstrap 4 โœ… optimized
Bootstrap 5 โœ… optimized

This means that it

  1. can be used to create a simple contact form in one minute
  2. can be modified to be any other form you need
  3. can be used as a starting point for your own AJAX forms in DNN

The app is built with the pattern Don't be DAFT (DAFT = Densely Abstract Features for Techies), aka the Anti-Abstraction pattern. So customizing it is mostly done using common technologies like HTML, JS and some C#.

Quick Intro To The Mobius Forms App for DNN

A DNN App is like a DNN module, just way better ๐Ÿ˜‰. Since this is an open-code/open-source 2sxc-app, you can customize it to be anything you want! This list just shows what it already does, so you know what you get out-of-the-first-box.

  1. Pre-Built Forms for use or learning
    1. Basic contact form with Subject, Message, Name, E-Mail
    2. A support-request form with a dropdown-example
    3. An example with JS show/hide logic and saving raw JSON-data
  2. AJAX, so no page reloads for validation, sending or messages
  3. Recaptcha (optional) validation on client and server
  4. data is saved, together with the Timestamp, SenderIP, optionaly generated Title or even raw JSON-data
  5. sends various e-mails, which are razor-templateable and has Reply-To and CC options
  6. multi-language labels and messages, already translated into English and German/Deutsch
  7. field validation uses html5 and pristinejs and works with multiple forms on the same page
  8. you can easily review / manage / filter the submitted items in a table-view
  9. export all submissions into an Excel-compatible XML format
  10. open code C# WebApi easy to customize if you ever need to

Because it's so simple and uses 2sxc, you can easily

Getting Started

This app is only useful is you use DNN or Oqtane. So assuming you have a DNN installation, all you need to do is install 2sxc and this app.

  • Here's how to install 2sxc and an App of your Choice

  • Now you can use this app as-is, or customize it to be whatever you need it to be.

  • It probably helps to review the Overview about how the parts play together by default, so you can then change as little as necessary to get it to do what you want

Customize the App

The Source Code is all here - so you can easily customize to your hearts desire!


History

  • 2021-11
    • Updated to v12 best-practices
    • Removed all jQuery dependencies
    • Hybrid - now works in Dnn and Oqtane
  • 2022-03
    • Added web.config with required assemblies
  • v05.04.00 2022-04
    • Changed all access to services to ToSic.Sxc.Services
    • Changed instances of Edit.Enable to page.Activate()
    • Changed uses of the Eav.Configuration.IFeaturesService to Sxc.Services.IFeaturesService
    • Updated JS to use new webapi methods (fetch -> fetchRaw)
  • v05.05.00 2022-06
    • Replaced all base classes with their 2sxc 14 equivalents
    • Replaced all GetService<> with the new ServiceKit14
    • Updated webpack
    • Updated all toolbar configurations to use the IToolbarService
  • v05.05.01 2022-08
    • Fixed the warning messages for the forms
  • v05.06.00 2023-05
    • Removed _ from Filenames
    • Replaced turnOn Tag with Kit.Page.TurnOn
    • Change Replace("p", ...) to Kit.Scrub()
    • New FieldBuilder for Checkboxes
  • v05.07.00 2023-06
    • Updated to 16.02 conventions
    • All Razor code now fully typed

app-mobius-forms's People

Contributors

getblup avatar ijungleboy avatar jeremy-farrance avatar lucatescari avatar maaaximum-at-2sic avatar raphael-m avatar ropalko avatar tvatavuk avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

app-mobius-forms's Issues

Error with recaptcha

After enabling recaptcha and setting the keys for v2 invisible, I get an error.

Sent:
{"Files":[],"Subject":"asd","Message":"asd","SenderName":"asd","SenderMail":"[email protected]","Terms-390":"True","GDPR-390":"True","MailChimp":false}

Perhaps it's missing the contactFormRequest["Recaptcha"]?

{"Message":"Bad Request","ExceptionMessage":"The given key was not present in the dictionary.","ExceptionType":"System.Collections.Generic.KeyNotFoundException","StackTrace":"   at System.ThrowHelper.ThrowKeyNotFoundException()\r\n   at System.Collections.Generic.Dictionary`2.get_Item(TKey key)\r\n   at FormController.ProcessForm(Dictionary`2 contactFormRequest, String workflowId)\r\n   at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>c__DisplayClass6_1.<GetExecutor>b__0(Object instance, Object[] methodParameters)\r\n   at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpControllerContext controllerContext, IDictionary`2 arguments, CancellationToken cancellationToken)\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at System.Web.Http.Tracing.ITraceWriterExtensions.<TraceBeginEndAsyncCore>d__17`1.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at System.Web.Http.Controllers.ApiControllerActionInvoker.<InvokeActionAsyncCore>d__1.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at System.Web.Http.Tracing.ITraceWriterExtensions.<TraceBeginEndAsyncCore>d__17`1.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__6.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n   at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__6.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at System.Web.Http.Filters.ActionFilterAttribute.<ExecuteActionFilterAsyncCore>d__5.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at System.Web.Http.Controllers.ActionFilterResult.<ExecuteAsync>d__5.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at System.Web.Http.Filters.AuthorizationFilterAttribute.<ExecuteAuthorizationFilterAsyncCore>d__3.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at System.Web.Http.Filters.AuthorizationFilterAttribute.<ExecuteAuthorizationFilterAsyncCore>d__3.MoveNext()\r\n--- End of stack trace from previous location where exception was thrown ---\r\n   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()\r\n   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)\r\n   at System.Web.Http.Controllers.ExceptionFilterResult.<ExecuteAsync>d__6.MoveNext()"}

Send doesn't hide recaptcha

Send should be hiding recaptcha on submission.

If the page is left open, then the recaptcha expires.

See attached screen shot.
2020-06-01_18-16-33

Mobius5 - Error in "Contact Form"

A new DNN/2SXC installation with the following parameters:

Mobius V5.03.02
DNN v.9.10.02
2SXC v13.01.00
Theme: 2Shine BS5 v5..0.1

The error appears to be in MailChimp code but MailChimp was not selected.

01/25/2022 14:21:31
General Exception

2SXC13
AbsoluteURL /api/2sxc/app/auto/live/api/Form/ProcessForm DefaultDataProvid
AbsoluteURL:/api/2sxc/app/auto/live/api/Form/ProcessForm

DefaultDataProvider:DotNetNuke.Data.SqlDataProvider, DotNetNuke

ExceptionGUID:8fbfdbac-68fb-4b92-a9dc-d4211e7d2809

AssemblyVersion:

PortalId:-1

UserId:-1

TabId:-1

RawUrl:

Referrer:

UserAgent:

ExceptionHash:K1quGjLdtW1MYYY7/4RocaEjgvo=

Message:d:\Websites\2sxc13\Website\Portals\0\2sxc\MobiusForms5\live\api\Parts\MailChimp.cs(89): error CS1070: The type name 'HttpClient' could not be found. This type has been forwarded to assembly 'System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. Consider adding a reference to that assembly.

StackTrace:

at System.Web.Compilation.AssemblyBuilder.Compile()
at System.Web.Compilation.BuildProvidersCompiler.PerformBuild()
at System.Web.Compilation.BuildManager.CompileWebFile(VirtualPath virtualPath)
at System.Web.Compilation.BuildManager.GetVPathBuildResultInternal(VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean throwIfNotFound, Boolean ensureIsUpToDate)
at System.Web.Compilation.BuildManager.GetVPathBuildResultWithNoAssert(HttpContext context, VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean throwIfNotFound, Boolean ensureIsUpToDate)
at System.Web.Compilation.BuildManager.GetVPathBuildResult(HttpContext context, VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean ensureIsUpToDate)
at System.Web.Compilation.BuildManager.GetCompiledAssembly(String virtualPath)
at ToSic.Sxc.Code.CodeCompiler.InstantiateClass(String virtualPath, String className, String relativePath, Boolean throwOnError) in C:\Projects\2sxc\2sxc\Src\Sxc\ToSic.Sxc\Code\CodeCompiler.cs:line 61
at ToSic.Sxc.Code.DynamicCodeRoot.CreateInstance(String virtualPath, String noParamOrder, String name, String relativePath, Boolean throwOnError) in C:\Projects\2sxc\2sxc\Src\Sxc\ToSic.Sxc\Code\DynamicCodeRoot_Compiler.cs:line 19
at FormController.ProcessForm(Dictionary2 contactFormRequest, String workflowId) at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>c__DisplayClass6_1.<GetExecutor>b__0(Object instance, Object[] methodParameters) at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpControllerContext controllerContext, IDictionary2 arguments, CancellationToken cancellationToken)
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Tracing.ITraceWriterExtensions.d__171.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Web.Http.Controllers.ApiControllerActionInvoker.<InvokeActionAsyncCore>d__1.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Web.Http.Tracing.ITraceWriterExtensions.<TraceBeginEndAsyncCore>d__171.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Filters.ActionFilterAttribute.d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Web.Http.Filters.ActionFilterAttribute.d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Filters.ActionFilterAttribute.d__5.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Controllers.ActionFilterResult.d__5.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Filters.AuthorizationFilterAttribute.d__3.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Filters.AuthorizationFilterAttribute.d__3.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Controllers.ExceptionFilterResult.d__6.MoveNext()
InnerMessage:

InnerStackTrace:

Source:System.Web

FileName:

FileLineNumber:0

FileColumnNumber:0

Method:

Server Name: OMEN2

Contact Form with Files error

Mobius V5.03.01 Hybrid
DNN v.9.10.02
2SXC v12.10.0

After setting the following features:

  • Custom WebAPIs save in ADAM
  • Public forms
  • Public Forms File Upload

running the "Generic Smart Form with Files" example results in the following error:

Screenshot:

Screenshot 2022-01-24 020900

Error Log (1st of 6 similar looking messages):

01/24/2022 02:08:14
General Exception
host
DNN (v9.10.2)
AbsoluteURL /api/2sxc/app/auto/staging/api/Form/ProcessForm DefaultDataPro
AbsoluteURL:/api/2sxc/app/auto/staging/api/Form/ProcessForm

DefaultDataProvider:DotNetNuke.Data.SqlDataProvider, DotNetNuke

ExceptionGUID:1adc5cb0-c889-41ec-b461-493598e6bd19

AssemblyVersion:

PortalId:-1

UserId:-1

TabId:-1

RawUrl:

Referrer:

UserAgent:

ExceptionHash:vIO238s3EblH6KcPqaN4hzKteec=

Message:Object reference not set to an instance of an object.

StackTrace:

at FormController.ProcessForm(Dictionary2 contactFormRequest, String workflowId) at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>c__DisplayClass6_1.<GetExecutor>b__0(Object instance, Object[] methodParameters) at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpControllerContext controllerContext, IDictionary2 arguments, CancellationToken cancellationToken)
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Tracing.ITraceWriterExtensions.d__171.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Web.Http.Controllers.ApiControllerActionInvoker.<InvokeActionAsyncCore>d__1.MoveNext() --- End of stack trace from previous location where exception was thrown --- at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Web.Http.Tracing.ITraceWriterExtensions.<TraceBeginEndAsyncCore>d__171.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Filters.ActionFilterAttribute.d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Web.Http.Filters.ActionFilterAttribute.d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Filters.ActionFilterAttribute.d__5.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Controllers.ActionFilterResult.d__5.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Filters.AuthorizationFilterAttribute.d__3.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Filters.AuthorizationFilterAttribute.d__3.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Web.Http.Controllers.ExceptionFilterResult.d__6.MoveNext()
InnerMessage:

InnerStackTrace:

Source:App_Web_formcontroller.cs.1f904a20.ijw9t8qc

FileName:

FileLineNumber:0

FileColumnNumber:0

Method:

Server Name: OMEN2

Form shows all validation messages by default / Form not working

Just installed the Mobius Forms app, and dragged a form onto the page. By default, and without inputting anything into the form, the validation alert boxes are shown (1st screenshot below). Browser refresh doesn't help, but I noticed they go away after clicking the manage content icon. They return after another browser refresh.

Not sure if related, or something else, but the form does not work for me. When the validation messages are shown as described above, the form does not submit at all. Nothing happens. When I click manage content, and the alert boxes go away, I can click Send, but I get an generic unknown error (2nd screenshot below).

DNN: v. 09.02.01 (533)
2sxc: v09.32.01-LTS
Mobius app: v02.00.01

image

image

Using a form field value for the to address

I have a form based on simple contact form. I have added a dropdown field called SendTo. Is it possible to use that value to set the Owner Email address so the form can be submitted to different departments?

Json error with 05.04.00 and 2sxc 14.10.0

After one of the latest updates, all my mobius apps show this error after clicking send e-mail.

Unable to cast object of type 'System.Text.Json.Nodes.JsonArray' to type 'Newtonsoft.Json.Linq.JArray'.
StackTrace:
at FormController.ProcessForm(Dictionary`2 contactFormRequest, String workflowId) in ...\Portals\0\2sxc\MobiusForms5\staging\api\FormController.cs:line 73

Feature Request: Prefill fields from Query-String

Sometimes it's useful to prefill some fields from the URL. E.g. on a job application form, it would be useful to support links like /apply-form?JobName=Programmer and the prefill the Field JobName with the value from the URL.

The solution should take care of HtmlEncoding the value to prevent script injection (XSS)

Cannot Create a New Form in Mobuis 4.1.0

This is a fresh new install of DNN v9.06.01, 2sxc v11.04, and Mobius 4.1 (I also let 2sxc install the latest Contact App, I assume that is 11.03, but I can't seem to find where it's version number might be hidden).

I tried following the Azing recipe, but I guess that is out of date. My goal was simple, I wanted to NOT modify the existing Views and create a new form that had SenderPhone and not Subject.

I added SenderPhone to the existing Content Type, "ContentSimple" - same as SenderName, everything default.

I made an exact copy of "Confact Form.cshtml" - meaning I copied each of the files in the root, /staging, and /live and gave all 3 the same name, "Contact-Form-basic.cshtml.

The only change I made to the /staging copy start at line 16, removing Subject and adding SenderPhone like this:

  <div class="mobius-form">
    @FieldBuilder.Text("SenderName", true)
    @FieldBuilder.EMail("SenderMail", true)
    @FieldBuilder.Text("SenderPhone", false)
    @FieldBuilder.Multiline("Message", true)

The form displays as expected:

No matter what I do, when I submit, I end up stuck with this error on line 7 in /staging/shared/_Toolbar.cshtml
7 var workflow = AsList(App.Data["Workflow"]).Where(w => w.WorkflowId == WorkflowId).FirstOrDefault();

Message:The given key was not present in the dictionary.

StackTrace:

   at System.ThrowHelper.ThrowKeyNotFoundException()
   at System.Collections.Generic.Dictionary`2.get_Item(TKey key)
   at ASP._Page_Portals_0_2sxc_Mobius_Forms_staging_shared__Toolbar_cshtml.Execute() in c:\HostingSpaces\METZ\midwestaccidentreconstruction.com\www\Portals\0\2sxc\Mobius Forms\staging\shared\_Toolbar.cshtml:line 7
   at System.Web.WebPages.WebPageBase.ExecutePageHierarchy()
   at System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage)
   at System.Web.WebPages.WebPageBase.<>c__DisplayClass7.<RenderPageCore>b__6(TextWriter writer)
   at System.Web.WebPages.WebPageBase.Write(HelperResult result)
   at ASP._Page_Portals_0_2sxc_Mobius_Forms_staging__Contact__Form__basic_cshtml.Execute() in c:\HostingSpaces\METZ\midwestaccidentreconstruction.com\www\Portals\0\2sxc\Mobius Forms\staging\_Contact__Form--basic.cshtml:line 13
   at System.Web.WebPages.WebPageBase.ExecutePageHierarchy()
   at System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage)

I foreach'd through the collection in App.Data and there is nothing named "WorkFlow"

It may or may not be related, but I also noticed that in the Views, the names are not appearing for the Content-Types, just the GUIDs, this screen clip is from the unmodified (your) View named "Contact Form":
image

This is a fresh new install of DNN v9.06.01, 2sxc v11.04, and Mobius 4.1 (I also let 2sxc install the latest Contact App, I assume that is 11.03, but I can't seem to find where it's version number might be hidden).

Outdated documentation

Documentation for v4 is severely outdated.
The wiki and recipies both mention tables that no longer exist.
Customizing a form is now a nightmare when compared to v3...

[Documentation request]Isolated file upload to adam features

I've read quite a few posts about file upload, and tested the moebious forms app, but I can't quite figure how file upload works.

  1. What is the relation between the adam folder name and the entity guid/id?

  2. Could you help create a simple app demo that demonstrates the single file upload feature? For us newbs it's way easier to integrate features without complex environments working around it.

Here's a headstart:

view:

<div>
    <label for="File">Text</label>
    <div>
        <input type="text" id="testText">
    </div>
</div>

<div>
    <label for="File">File (jpeg only)</label>
    <div>
        <input type="file" id="SingleFile" accept=".jpg, .jpeg" value="">
    </div>
</div>

<div>
    <label for="File">Any file</label>
    <div>
        <input type="file" name="Attachments" id="File2_1" value="">
    </div>
</div>

<div>
    <label for="File">Another file</label>
    <div>
        <input type="file" name="Attachments" id="File2_2" value="">
    </div>
</div>

<div>
    <button id="sendData" type="button">SendThis</button>
</div>

<script>
$(document).on("click", "#sendData", sendData);

function getData() {
    return {
        text: $( '#testText' ).val(),
        Files: [],
        user: "@Dnn.User.Username"
    };
}

function sendData() {
    var newItem = getData();
    
    // push file data here
    
    $2sxc(@Dnn.Module.ModuleID).webApi.post("file/ProcessForm", {}, newItem, true);
}
</script>

controller:

using DotNetNuke.Security;
using DotNetNuke.Web.Api;
using System.Web.Http;
using ToSic.SexyContent.WebApi;
using System.Collections.Generic;
using System;
using System.Linq;
using System.Web.Compilation;
using System.Runtime.CompilerServices;
using DotNetNuke.Services.Mail;
using Newtonsoft.Json;
using System.IO;

public class fileController : SxcApiController
{
    [HttpPost]
    [DnnModuleAuthorize(AccessLevel = SecurityAccessLevel.Anonymous)]
    [ValidateAntiForgeryToken]
    public void ProcessForm([FromBody]Dictionary<string,object> contactFormRequest)
    {
        contactFormRequest = new Dictionary<string, object>(contactFormRequest, StringComparer.OrdinalIgnoreCase);

        var guid = Guid.NewGuid();
        contactFormRequest.Add("EntityGuid", guid);
        App.Data.Create("demoData", contactFormRequest);

        var files = new List<ToSic.Sxc.Adam.IFile>();
        foreach(var file in ((Newtonsoft.Json.Linq.JArray)contactFormRequest["Files"]).ToObject<IEnumerable<Dictionary<string, string>>>())
        {
            var data = Convert.FromBase64String((file["Encoded"]).Split(',')[1]);
            files.Add(SaveInAdam(stream: new MemoryStream(data), fileName: file["Name"], contentType: "demoData", guid: guid, field: file["Field"]));
        }
    }
}

DNN 9.2 Compatibility - v01.04.01

Hello, does this module work in DNN 9.2

I've just installed the latest version of 2sxc content (9.23.0)
And Mobius Forms (v01.04.01)

I get the below error - It seems to be referencing a path that isn't on my system.

Please let me know if there's any way I can resolve this.

Thanks in advance

System.Web.Compilation.BuildManager.GetCompiledType(VirtualPath virtualPath) at ToSic.SexyContent.Engines.RazorEngine.CreateWebPageInstance() in C:\Projects\2sxc-dnn742\Website\DesktopModules\ToSIC_SexyContent\2Sexy Content Razor\RazorEngine.cs:line 109 at ToSic.SexyContent.Engines.RazorEngine.InitWebpage() in C:\Projects\2sxc-dnn742\Website\DesktopModules\ToSIC_SexyContent\2Sexy Content Razor\RazorEngine.cs:line 126 at ToSic.SexyContent.Engines.RazorEngine.Init() in C:\Projects\2sxc-dnn742\Website\DesktopModules\ToSIC_SexyContent\2Sexy Content Razor\RazorEngine.cs:line 30 at ToSic.SexyContent.Engines.EngineBase.Init(Template template, App app, IInstanceInfo hostingModule, IDataSource dataSource, InstancePurposes instancePurposes, SxcInstance sxcInstance, Log parentLog) in C:\Projects\2sxc-dnn742\Website\DesktopModules\ToSIC_SexyContent\ToSic.Sxc\SexyContent\Engines\EngineBase.cs:line 62 at ToSic.SexyContent.SxcInstance.GetRenderingEngine(InstancePurposes renderingPurpose) in C:\Projects\2sxc-dnn742\Website\DesktopModules\ToSIC_SexyContent\ToSic.Sxc\SexyContent\SxcInstance_Render.cs:line 121 at ToSic.SexyContent.SxcInstance.Render() in C:\Projects\2sxc-dnn742\Website\DesktopModules\ToSIC_SexyContent\ToSic.Sxc\SexyContent\SxcInstance_Render.cs:line 29

at System.ThrowHelper.ThrowKeyNotFoundException() at System.Collections.Generic.Dictionary`2.get_Item(TKey key) at ToSic.Eav.Apps.Template.get_Query() at ToSic.SexyContent.Edit.ClientContextInfo.ClientInfoContentGroup..ctor(SxcInstance sxc, Boolean isCreated) in C:\Projects\2sxc-dnn742\Website\DesktopModules\ToSIC_SexyContent\ToSic.Sxc\Edit\ClientContextInfo\ClientInfoContentGroup.cs:line 31 at ToSic.SexyContent.Environment.Dnn7.ClientInfosAll..ctor(String systemRootUrl, PortalSettings ps, IInstanceInfo mic, SxcInstance sxc, UserInfo uinfo, Int32 zoneId, Boolean isCreated, Boolean autoToolbar, Log parentLog) in C:\Projects\2sxc-dnn742\Website\DesktopModules\ToSIC_SexyContent\2sxc Dnn\Environment\Dnn7\ClientInfos\ClientInfosAll.cs:line 34 at ToSic.SexyContent.Environment.Dnn7.DnnRenderingHelpers.UiContextInfos(Boolean autoToolbars) in C:\Projects\2sxc-dnn742\Website\DesktopModules\ToSIC_SexyContent\2sxc Dnn\Environment\Dnn7\DnnRenderingHelpers.cs:line 123 at ToSic.SexyContent.Environment.Dnn7.DnnRenderingHelpers.ContextAttributes(Int32 instanceId, Int32 contentBlockId, Boolean includeEditInfos, Boolean autoToolbar) in C:\Projects\2sxc-dnn742\Website\DesktopModules\ToSIC_SexyContent\2sxc Dnn\Environment\Dnn7\DnnRenderingHelpers.cs:line 78 at ToSic.SexyContent.Environment.Dnn7.DnnRenderingHelpers.WrapInContext(String content, String dontRelyOnParameterOrder, Int32 instanceId, Int32 contentBlockId, Boolean editContext, String tag, Boolean autoToolbar, Boolean addLineBreaks) in C:\Projects\2sxc-dnn742\Website\DesktopModules\ToSIC_SexyContent\2sxc Dnn\Environment\Dnn7\DnnRenderingHelpers.cs:line 58 at ToSic.SexyContent.SxcInstance.Render() in C:\Projects\2sxc-dnn742\Website\DesktopModules\ToSIC_SexyContent\ToSic.Sxc\SexyContent\SxcInstance_Render.cs:line 76

Can not send email with simple contact form

Hello,

Let me say first I am super excited about this app. Your contribution to the DNN ecosystem is amazing.

DNN version 8.0.4 (226)
2sxc version: 8.9.0
On local dnn install

I can import the app and configure the settings for the contact form adding my email etc.
The form data is captured and saved in the content "table"

PROBLEM: on submitting the form the error appears:

An unexpected error occured while sending. Please try again. If it fails again, please send it by E-Mail.

Cheers

THe following is the stack trace from the event log:

Message:Cannot perform runtime binding on a null reference
StackTrace:
   at CallSite.Target(Closure , CallSite , Object )
   at System.Dynamic.UpdateDelegates.UpdateAndExecute1[T0,TRet](CallSite site, T0 arg0)
   at System.Web.WebPages.Instrumentation.HttpContextAdapter.get_PageInstrumentation()
   at System.Web.WebPages.Instrumentation.InstrumentationService.RunOnListeners(HttpContextBase context, Action`1 act)
   at System.Web.WebPages.WebPageExecutingBase.BeginContext(TextWriter writer, String virtualPath, Int32 startPosition, Int32 length, Boolean isLiteral)
   at ASP._Page_Portals_0_2sxc_Mobius_Forms_email_templates__Email_to_owner_cshtml.<>c__DisplayClass1.b__0(TextWriter __razor_helper_writer) in c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\bbcceb7c\db3d20c6\App_Web_4gkscrlj.2.cs:line 0
   at System.Web.WebPages.HelperResult.ToString()
   at FormController.ProcessForm(Dictionary`2 contactFormRequest) in c:\Users\jordan\krisis dev\dnn sites\sites\effu-dev\website\Portals\0\2sxc\Mobius Forms\api\FormController.cs:line 92
   at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.<>c__DisplayClassc.b__6(Object instance, Object[] methodParameters)
   at System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ExecuteAsync(HttpControllerContext controllerContext, IDictionary`2 arguments, CancellationToken cancellationToken)
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Tracing.ITraceWriterExtensions.d__18`1.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Controllers.ApiControllerActionInvoker.d__0.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Tracing.ITraceWriterExtensions.d__18`1.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Controllers.ActionFilterResult.d__2.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Filters.AuthorizationFilterAttribute.d__2.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Filters.AuthorizationFilterAttribute.d__2.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Filters.AuthorizationFilterAttribute.d__2.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Controllers.ExceptionFilterResult.d__0.MoveNext()

SendMail doesn't work with SSL and doesn't handle errors

public bool send(
string emailTemplateFilename,
Dictionary<string,object> valuesWithMailLabels,
string MailFrom,
string MailTo,
string MailCC,
string MailReply,
List<ToSic.Sxc.Adam.IFile> files,
ToSic.SexyContent.IAppAndDataHelpers context)
{
// Check for attachments and add them to the mail
var attachments = files.Select(f =>
new System.Net.Mail.Attachment(
new FileStream(System.Web.Hosting.HostingEnvironment.MapPath("~/") + f.Url, FileMode.Open), f.FullName)).ToList();
var mailEngine = TemplateInstance(emailTemplateFilename, context.App.Path);
var mailBody = mailEngine.Message(valuesWithMailLabels, context).ToString();
var mailSubj = mailEngine.Subject(valuesWithMailLabels, context);
// Send Mail
// uses the DNN command: http://www.dnnsoftware.com/dnn-api/html/886d0ac8-45e8-6472-455a-a7adced60ada.htm
Mail.SendMail(MailFrom, MailTo, MailCC, "", MailReply, MailPriority.Normal, mailSubj, MailFormat.Html, System.Text.Encoding.UTF8, mailBody, attachments, "", "", "", "", false);
return true;
}

  1. SendMail.Send() always returns true and doesn't handle STMP-Errors. Instead the result should check wheter DotNetNuke.Services.Mail.Mail.SendMail() returned an empty string (success) but otherwise return false (handle the error).
  2. It has smtpEnableSSL-parameter hardcoded to false (last parameter in DotNetNuke.Services.Mail.Mail.SendMail()). Instead this should be retrieved from DotNetNuke.Entities.Host.Host.EnableSMTPSSL.

Uncaught TypeError: Cannot read property 'init' of undefined

The other issue I added (issue #10 ) stems from this...
Hence I installed a fresh instance of DNN 9.2 to try see if I could solve it...

Anyway - This is present in an established DNN site which recently upgraded to Evoq 9.2

The forms all now fail to load correctly and appears to be a jQuery issue.

They are running 2sxc 8.12.0 and an early edition of Mobius Forms.

The error is:

Uncaught TypeError: Cannot read property 'init' of undefined

This is the failing line:

$(function () { window.appJqF.init(); }); // init the form - must trigger in-line, in case the form was added w/ajax

As always, any help would be greatly appreciated

Recaptcha warning code typo

_Recaptcha.cshtml line 11

@if(App.Settings.RecaptchaShowWaring == null || App.Settings.RecaptchaShowWaring) {

Typo in "warning" makes the warning always show.

Can't install and use on 2sxc 9.23 or 9.30 on DNN 9.02.00

Tried on a client site as well as a clean install. Install works partially, but fails. Then for the App card you just see "Error". If you go in to App management you can see the logo and app meta data, but there are no data or views or anything. Then, once you delete it and clean up, it takes quite a bit of work deleting folders and files to get 2sxc usable again without errors.

Error mailchimp related even when disabled

Using the mobius 5 with default settings (just changed the email), simple form:
Request:
{"Files":[],"Subject":"dfg","Message":"ddfg","SenderName":"dfg","SenderMail":"[email protected]","Terms-390":"True","MailChimp":false}

Response:
\Portals\0\2sxc\MobiusForms5\staging\api\Parts\MailChimp.cs(89): error CS1070: The type name 'HttpClient' could not be found. This type has been forwarded to assembly 'System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. Consider adding a reference to that assembly."

Wish: Example with attachment

If we want to implement this, we would have to

  1. Create a content-type with an adam field
  2. Specify how the JS should send attachments, and how to tell the API for which "field" it's meant
  3. Modify the API to also save attachments

Can't use 2SXC

After several tries finally error list goes really short, this is the last error i got and can not find information about it. I don't have the files on C:\Projects\2sxc-dnn742\Website\DesktopModules we have it on C:\webapps\DNN7\DesktopModules

Error: Content is currently unavailable. DotNetNuke.Services.Exceptions.ModuleLoadException: Error - can't find 2sxc instance configuration. Probably trying to show an app or content that has been deleted. ---> System.Exception: Error - can't find 2sxc instance configuration. Probably trying to show an app or content that has been deleted. at ToSic.SexyContent.View.Page_PreRender(Object sender, EventArgs e) in C:\Projects\2sxc-dnn742\Website\DesktopModules\ToSIC_SexyContent\View.ascx.cs:line 63 --- End of inner exception stack trace ---

Send e-mail CC based on form field

There could be a way to send CCs of the e-mail (either customer or owner) based on a form field.
There already is a field on the configuration entity that allows CCs to several emails, so it's just a small hijack.

Bug in Razor code in the Generic Smart Form Example (fix included)

Mobius V5.03.01 Hybrid
DNN v.9.10.02
2SXC v12.10.0

Running the Generic Smart Form example without modification results in the following error:

Message:Customer Send mail failed: d:\Websites\dnn-9-10-2\Website\Portals\0\2sxc\MobiusForms5\live\email-templates\EmailToCustomerWithData.cs(24): error CS1061: 'System.Collections.Generic.Dictionary<string,object>' does not contain a definition for 'Subject' and no extension method 'Subject' accepting a first argument of type 'System.Collections.Generic.Dictionary<string,object>' could be found (are you missing a using directive or an assembly reference?)

Replacing line 24:

" + data.Subject + @"

with

" + data["Subject"] + @"

appears to fix the problem (no errors and the output looks correct).

Can't validate checkbox in contact form

I'm trying to make a generic contact form with an input type checkbox for the privacy policy acceptance.
It seems that for the input type checkbox the "required" attribute for validation does not work, cause even if checked it will still remain invalid...
Thanks you
Regards

Error after installing the App and adding to page

Just installed Mobius Form 2 App on 2sxc 9.3 and DNN 8.0.3 but when I add the form to the page I get the following error:
Error: System.IO.FileLoadException: Could not load file or assembly 'System.Web.Helpers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) File name: 'System.Web.Helpers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' at Connect.Dnn.Koi.DnnSkinFile.AutoDetect() at Connect.Koi.Context.HttpContextState.TryToDetectTheCssFramework() at Connect.Koi.Context.HttpContextState.get_CssFramework() at Connect.Koi.Context.ToolsForCurrentState.get_Css() at Connect.Koi.Koi.Class(String classes) at ASP._Page_Portals_9_2sxc_Mobius_Forms__Contact_Form_cshtml.Execute() in c:\inetpub\vhosts\zzzzzzzzzzzzzzzzzzzz.co.nz\httpdocs\Portals\9\2sxc\Mobius Forms\_Contact Form.cshtml:line 32 at System.Web.WebPages.WebPageBase.ExecutePageHierarchy() at System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage) at ToSic.SexyContent.Engines.RazorEngine.Render(TextWriter writer) in C:\Projects\2sxc-dnn742\Website\DesktopModules\ToSIC_SexyContent\2Sexy Content Razor\RazorEngine.cs:line 65 at ToSic.SexyContent.Engines.RazorEngine.RenderTemplate() in C:\Projects\2sxc-dnn742\Website\DesktopModules\ToSIC_SexyContent\2Sexy Content Razor\RazorEngine.cs:line 92 at ToSic.SexyContent.Engines.EngineBase.Render() in C:\Projects\2sxc-dnn742\Website\DesktopModules\ToSIC_SexyContent\ToSic.Sxc\SexyContent\Engines\EngineBase.cs:line 92 at ToSic.SexyContent.SxcInstance.Render() in C:\Projects\2sxc-dnn742\Website\DesktopModules\ToSIC_SexyContent\ToSic.Sxc\SexyContent\SxcInstance_Render.cs:line 58 WRN: Assembly binding logging is turned OFF. To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1. Note: There is some performance penalty associated with assembly bind failure logging. To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog].

Any ideas how this might be fixed? Thank you.

Import App Fails in DNN 9.2 with 2sxc 9.23

Tried importing 2sxcApp_Forms_01.04.01.zip in to a clean, new DNN 9.02.00 install with 2sxc 9.23. The import failed, see attached. If this app is not currently compatible with the new versions of DNN/2sxc, should I expect that it would be fixed some time soon?

image

Looking through DNN's Event log/viewer, there were a slew of errors with messages like:
General Exception, Message: something went wrong - can't find type in app, but it's not a global type, so I must cancel
General Exception, Message:too many or to few content types found for the content-type @ALL - found 0
Admin Alert,
2sxc-Api:Auto-Log Exception
ModuleId:420
2sModC(24)CB.Mod(e7):parent#420, content-block#420, z#2, a#0
2sModC(24)CB.Mod(e7)Sxc.Instnc(fe):get SxcInstance for a:0 cb:420
2sModC(24)CB.Mod(e7)DS.Create(95):will create view data source
2sModC(24)CB.Mod(e7)Sxc.Instnc(fe)App.PermCk(b4):init for type:, itm: (), meta1: , meta2:
2sModC(24)CB.Mod(e7)DS.Create(95):mid#420, draft:True, template:
2sModC(24)CB.Mod(e7)DS.Factry(e8):get init #2/0, draft:True, config:False
2sModC(24)CB.Mod(e7)DS.Create(95):use pipeline upstream:True
2sModC(24)CB.Mod(e7)DS.Create(95):no template override
2sModC(24)CB.Mod(e7)Sxc.Instnc(fe)CG.RefMan(2d):get selectable apps
2sModC(24)CB.Mod(e7)Sxc.Instnc(fe)CG.RefMan(2d)App:zone base for z#2

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.