Giter Club home page Giter Club logo

eitanblumin / crude-asp Goto Github PK

View Code? Open in Web Editor NEW
24.0 7.0 13.0 22.7 MB

Low Code Application Generator in Classic ASP, with MSSQL Database, Bootstrap, Fontawesome, and jQuery. Based on the AdminLTE web template.

Home Page: https://git.eitanblumin.com/CRUDE-ASP/

License: Mozilla Public License 2.0

JavaScript 47.62% CSS 5.55% HTML 43.67% ASP 2.40% PLpgSQL 0.12% PHP 0.02% TSQL 0.62%
crud-application crud crude crud-operation crud-functionality crud-actions crud-web crud-generator crud-gui asp

crude-asp's Introduction

CRUDE-ASP

logo

CRUDE:

  • Create
  • Read
  • Update
  • Delete
  • Execute

This project aims to implement an easy-to-use platform to create CRUD Application websites using the most-available free technologies (classic ASP, bootstrap, fontawesome, jquery, etc.), plus "Execute" functionality to expand database capabilities. Using this project you can easily create "Data Views" which would serve as CRUD interfaces where you can manipulate data from a SQL Server database, and to also execute custom database commands (such as stored procedures).

No coding knowledge required! All configuration and management of the CRUD elements are completely online with a GUI. This means CRUDE-ASP is essentially a "low-code development platform".

The project should be optimal for rapid application development of simple LOB (line-of-business) applications. There's absolutely NO programming knowledge required. It could of course come in handy for the more advanced scenarios, but in the most part, you should be able to implement most common application features using the easy-to-understand UI of CRUDE, without writing a single word of code.

Data View Example

Data View Editing Example

Browse Module Example

Editing in Browse Module Example

Please see the Wiki for more info

Getting Started

These instructions will get you up and running on your local machine.

Prerequisites

  • Classic ASP
  • Microsoft SQL Server 2016 database (Express, Mobile, LocalDB and Azure editions are also supported)

To install Classic ASP on your machine, the following features will need to be installed using "Turn Windows features on or off":

  • Internet Information Services
    • Web Management Tools
      • IIS Management Console
      • IIS Management Scripts and Tools
      • IIS Management Service
    • World Wide Web Services
      • Application Development Features
        • ASP
        • ISAPI Extensions
        • ISAPI Filters
        • Server-Side Includes
      • Common HTTP Features (everything)

You will need a Microsoft SQL Server database to be installed. If you don't have a license already, you can download the Developer edition for free here.

Installing

This project is still in initial development, so there's nothing to install at the moment :)

But when there would be a first release, then it would be something like this:

  1. Deploy the database using a dacpac file, or by restoring from a backup, or by running a TSQL script.
  2. Copy the website folder to a subfolder in c:\inetpub\wwwroot
  3. Update the connection strings in the configuration file (web.config)
  4. If your connection strings use Windows Authentication, you'll need to configure anonymous authentication in IIS manager:
    1. Open IIS Manager
    2. Find your site under the sites list
    3. Under the "IIS" section, open the "Authentication" page
    4. Make sure "Anonymous Authentication" is enabled
    5. Click on "Anonymous Authentication" and Edit it
    6. Configure the username and password of a specific Windows user to be impersonated by every visitor
    7. In the database, create a Windows Authentication login for the above user, and give it permissions as necessary (i.e. read+write+execute)
  5. Other authentication methods are also available in IIS, such as Windows Authentication, Forms, URL and more. But those are more advanced and far beyond the scope of this project.
  6. That's it! The site should be immediately operational and you should be able to start using it and constructing data views.

Built With

Dependencies

Authors

  • Eitan Blumin - Initial work - GitHub

List of other contributors who participated in this project.

License

This project is licensed under the Mozilla Public License 2.0 - see the LICENSE.md file for details

Acknowledgments

  • Hat tip to anyone whose code was used, especially AdminLTE.
  • Do you want to help by participating in the project? Let me know via LinkedIn.

Future Plans

A new project is in the works, to utilize modern web technologies such as .NET Core and a modern JavaScript framework. You can find it here: CRUDE-NET

crude-asp's People

Contributors

eitanblumin avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

crude-asp's Issues

Implement portal.Navigation usage in side nav menu

Using recursive hierarchical navigation links poses several problems that will need to be dealt with:

  • How would the recursive implementation of the levels work? Nested recordsets? Arrays? Json?
  • How will we know which of the child-items is active?
  • How will we know which parent-level item needs to be active (open)?
  • How would we avoid excessive database round-trips?

Allow customizing the style of the datatable

Allow changing the class of the datatable:

  • table-hover
  • table-bordered
  • table-striped
  • etc.

Sub-tasks:

  • Add new field to portal.DataView table
  • Add new field in portal.DataViewField for manipulation
  • Implement usage of the new field

Create support for additional jQuery placeholders

Declare values for additional AngularJS variables to be used as placeholders:

  • row['...'] (already implemented row-level palceholders)
  • {{this}} (current field value)
  • dataview[id]
  • dataview[title]
  • dataview[...] (TBD)
  • urlparam[...] (Get parameter values from querystring)
  • user[...] (User properties, once authentication module is implemented)

Provide more info when deleting item

When deleting an item using the Deletion modal, display in the modal body the item's fields (only those that are set to be displayed in the items list)

Implement Site Search

Site-wide search would search all data views titles and descriptions (this gives an idea: implement tags for dataviews?)

Question where to put the search box: Leave it at the side nav? Or move it to top nav?

Error in adding DataView

Describe the bug
Trying to use undeclared "nOrdering" variable

To Reproduce
Add a new DataView using admin_dataviews.asp

Top bar notification menus

Could be useful to implement them dynamically somehow.
Some sort of generic HTML template that displays data from a query?
The notification menu items themselves could be set up dynamically (glyph icon, badge color, "view all messages" URI...)

Make datatable options configurable

  • Search
  • Sortable columns
  • Pagination
  • Page size selection
  • Client side state save
  • Footer
  • Information
  • Default page size
  • DML button styles: icon only, text and icon, text only, hyperlink, button

Implement Server-Side filtering

Equivalent of the seek_* filters in form_template, but also the Filter part.

Would need to be implemented as advanced search using dynamic structured filters, plus implementation of pagination. This would also solve the big data problem causing buffer overflows #49.

Filter parameters should be saved in an AngularJS collection object (something like "filters"), which could be used similarly to the "row" object in angular. For example:
filter["Label"] - would return the search parameter value entered for the "Label" column.
This would allow using AngularJS placeholders in things like DataView description, action buttons, etc.

Planned Future Features

I'm not sure how soon I'll be able to get to implementing these features, but this is what I have planned:

  • Data Views with DataTables - Fully functional datatables (sort, search, pagination), modals for editing/adding/deleting. Use Angular for async loading of data. Use ASP for dynamic fields presentation. Use toastr notifications for confirmation and error messages.
  • Configurable Recursive Navigation - The navigation sidebar would be fully configurable, including hierarchical links. Each link would either point to one of the data views, or to a custom URL. If a link points to a dataview, it would automatically be visibly set as "active" when its dataview is opened. A navigation link could be activated by more than one dataview (in case there are dataviews that link to each other, and/or if there's a hierarchy between them).
  • Data View Action Links - Each dataview can have, in addition to its data displayed, also a set of customizable "action buttons". Each such an action button can either be one of the following:
    • Regular HTTP link
    • Custom database T-SQL command
    • Parameterized database T-SQL command (will use a modal dialog to set parameter values before execution, and/or use pre-configured default values)
  • Data Charts - Using the free javascript chart libraries (chart.js, morris.js, Flot, inline charts), I want to make it possible to present configurable chart data, instead of or in addition to the regular datatables. This is NOT going to be easy to implement, I fear the day when I'll reach this... But it's such a cool idea I just won't forgive myself for not doing it.

The AdminLTE 2.4.5 web template has a lot of very cool features. It'll be interesting to see how many of them I can implement dynamically, and how well it would eventually work.

Home Page - How to implement?

Do we make it a centralized dashboard of sorts?
A landing page with a welcome message and navigation?
A fully customizable page with a selection of widgets and content boxes?
This thing alone opens up one hell of a can of worms.
We're getting into Wix-like territory here.
Very dangerous shit that could potentially suck me in as one heck of a project in and of itself.

Or... The default.asp page could simply be left to the user to do what they will with it by changing its code. hmmm...

New deal:
A few configuration settings would determine the home page behaviour:

  • home page type (data view, data view charts, custom page, custom URL)
  • data view id
  • custom page id
  • custom URL

Global Site Settings

The following "global" settings should be easily configurable:

  • Site Name (to be used as browser tab title)
  • Site Public URL (for use in e-mails and such)
  • Color theme (use the themes provided by AdminLTE)
  • Layout style (AdminLTE layout variations)
  • Sticky Footer
  • Footer Text
  • Favicon
  • Toggle Anonymous Registration
  • Toggle User Profiles
  • Database Connection String
  • Toastr Notifications Style Options
  • More (TBD)

These settings need to be database-independent. Probably saved in a json file or whatever. Like a web.config file of sorts.

AutoInitDataViewFields Enhancements

  • Auto-Discover foreign keys and linked tables
    • PK to be used as Value field
    • First textual column to be used as Title field
    • If foreign key column is nullable, add "UNION ALL SELECT '-- None --',NULL" as linked table addition
  • Unicode maxlength needs to be divided by 2

Implement Custom Actions

After Action Links management is implemented in the admin section, we'll need to implement their usage in dataview.asp

Generic Framework:

  • Actions and Action Parameters JavaScript object collections (i.e. "dt_Actions"), each action object would have action parameters collection same structures as "dt_Columns" collection.
  • Action Parameters Modal
  • Action Parameters Modal Rendering Function
  • Action Parameters Modal Re-Fill Function
  • Action Execution Wrapper Functions (for DataTable button: one for inline and one for toolbar)

Action Types:

  • HTTP Link
  • DB Procedure
  • DB Ad-Hoc Command
  • JavaScript Function
  • HTTP REST API Request

Action Properties:

  • Is Per Row
  • Require Confirmation
  • Open (HTTP Link) in New Window
  • Send (Selected) DataTable Row(s) as Parameter (XML/JSON?)
  • REST Method (GET / POST / PUT / PATCH / DELETE)

Implement dataview for dataview actions

DataView Actions should be configurable on several levels:

  • Top of page action buttons
    • Implement hierarchical links (?)
  • Contextual links per row within the datatable under the Actions column (incl. Angular palceholders)

Test Angular Placeholders

  • Test mention of one column in another column.
  • Test URL links that inject value from another column.

Will need to find a way to reconcile different Angular object names in the datatable versus the Modal dialog ("row" versus "selectedRow").
Need to check if we can rename "selectedRow" to "row" and if that doesn't cause conflicts.

Add LinkedTable resolve in items list

Combobox-type fields need to be resolved in the items list. This could prove problematic due to the Angular implementation, so maybe a separate field needs to be added (i.e. "FieldName_resolved" or something).

This will also need to be done in the Deletion modal.

Implement read-only fields in form

The Edit/Add modal currently doesn't do anything special for read-only fields. need to add support.

Problematic input types:
rte, select

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.