Coder Social home page Coder Social logo

quotemanager's People

Contributors

dchun avatar phuong3030 avatar

Watchers

 avatar  avatar

quotemanager's Issues

Landing Page

Update features section
Update review section with real fake name
Update pricing section with links to signup with respective pricing tiers
Update 14 day trial signup
Update contact us footer
Update and create social media links
Create connection to newsletter to real list
Update copyright and legal information

Add Signature Field to Quotes

I'm not quite sure where we should add this field just yet since we will need to verfiy whether a quote has been signed by the user or our user's.

We need to be able to collect a signature on the customer facing side of the quote. Once the signature has been collected, we need to modify the status of the quote as being complete.

Add Fields To Accounts

Add about, address, and phone number fields to account model. Also separate account avatar upload to separate view where these fields can additionally be added.

Add States To Quotes

Add states - new, pending, complete, and expired to Quote model.

When user creates a quote, the quote state is new.
When user sends quote via email form, the quote state is pending.
When user's user signs quote, state is complete.
When quote expires, state is expired.

Form Options Not Defined

When a form is created with fields with options like "select" and options are not selected, going back and editing the page leads to an error. The line:

<% if defined? options %>

to catch errors is not working properly.

We need to either fix it or add a validation that fields with options need to be filled in with at least one option.

Javascript custom form field

Js custom form field give user ability to write and use their javascript in page.

User can define his custom javascript when creating form. Quote manager server will store this field and send it through form inline js.

In-page form field

User will use 'in-page' form field to enter their element id / class. We will use the value get from this field to search in user page.

Quote manager new form page: Label of this field is use for search variant option in shopify product page.

Quote manager show form page: This in-page field will show text input, user use it to enter variant option value and submit to create new request.

Shopify product page: This label of this in-page field use for search variant value. (issue Merge JS & Form Requests into One Request will resolve this function)

Store Files Under Account ID

Currently files are stored in a tmp subfolder that is labeled as the field id in the json object.

Can we add all files under the account ID and add it to a subfolder organized by a two digit year suffix concatenated with a two digit month?

So If I am a user and I am under the account.id = 1 and I upload a file image.png,

It should be uploaded to the directory "uploads/files/1/15-06/image.png"

Add User Roles

Create simple roles.

Admin - Can CRUD Users & Payments & Everything Else
Manager - Can CRUD Everything Except Users & Payments
Viewer - Read Access To Everything Except Users & Payments

Remove Shopify Specific Logic In Form-Inline.js

Make form-inline.js file platform agnostic.

For example extract the following:

a = document.getElementsByClassName('coll-prod-price');
for (var i=0; i<a.length; i++) { 
    if ( a[i].innerHTML.match(/ 0\./) ) { 
        a[i].parentNode.previousElementSibling.innerHTML = 'Quote';
        a[i].innerHTML = 'Request Quote'; 
    } 
}

and add it as an option under the javascript tab of the form#new/edit view as a pre-populating option from a radio form under the label 'shopify'. And do something similar for similar platforms like woocommerce and opencart.

Remove Fields From Users

Remove bio, address, and phone number from users and add those fields to accounts profile. See separate issue for adding fields to accounts

Form Add File Field

User CarrierWave Gem for adding files via form builder with 2MB max file size and restrictions to image file types and zip files.

Optimize assets

Precompilation run too slow. Remove all unused javascript library, css file.

Add Header Field To Form

Add a header field to the form. But instead of adding it as an input it will just be text output.

On the right panel let's have a wsywig editor so the user can customize the way the content should appear

CORS Fix

I modified the origin header addition in my local environment as a before filter and I don't get a cors error in my browser but it continues to appear when posting to the production server.

What's strange is that it worked fine before when the cors header was added as an after filter.

Could you look into this? Perhaps we can circumvent this issue by just hardcoding the header to allow all requests in the the nginx config files.

Analytics Tracking For Quotes & Emails

If user visits quotation page, track length of view, ip address of viewer, and whether the user is unique.

Possible integration with a heatmap library.

Email User When Form Is Successfully Submitted

When someone submits a form, we need to send an email with the following:

to: emails in settings of form
reply-to: submitted value from email field in form
*bcc: email to send to our server to change state of request
from: we can either send mail with sendmail or create an email and send with smtp
subject: "Request From #" + id_of_form + " " + title_of_form
body: request fields and values

*For the bcc field we need to add a field to the Request Model which will hold the state of the request. When a new request is made the default state is "new".

When we send an email either through the email that was sent in response to our autoresponder by parsing the subject line and finding the first string that following the "#" sign with regex, or, via the quote generator (which will also send an email), the state of the request will need to change to "pending".

Then the user can manually change the state to "complete" or if there is a quote that was made and the user signed the quote, we can programmatically change the Request state to "complete"

Quote Templates

I initially planned on implementing liquid templates against quotes but I fear it may be too complex for users.

I think a better approach might be to create some predefined templates that a user can select from to choose their final design.

I was also thinking we might have some drag and drop elements for the users to position "blocks" like the price. description, etc.

Create a quote, copy the token, and open a new browser that you are not logged into add the url for the quote and append the parameter ?token="paste token here"

In that view should be the design the user wants. We would want to hide the header of the front end layout of course.

Any ideas on the best way to approach this without making things too complex?

Add Server Side Validations To Forms

Given a form exists with required fields
When a required field is blank and I submit the form
Then the server will respond with the field that needs to be filled in html
And the server will respond with the field that needs to be filled in json

Form field in right order

Add an index for each form field and store form field position in database. And all form fields can be put in right order in modal.

Add Third Column To Form Create View

Since there is a lot of empty whitespace to the right of the form, let's reduce the second column where the form is rendered from 9 to 6 and add a third column size of 3.

On the third column we will add a settings area. In the settings detail, we will store things like css and javascript (we can remove the javascript custom field and add it here). Let's further split that third column into three tabs: CSS, JS, & Settings (use the superhero faq.html tabs). We will store the css and js in the fields json column and we will store in a separate column, perhaps as an array field to store emails that are inputted in the settings area which we will use to email all the defined users every time the form is submitted.

In the second column where the form is rendered let's split it up into two tabs with the superhero faq.html template and add the instructions you added to the form#new view with the default view being the rendered form.

Email Field in Quote#show View

Add email form in quote#show view that is either pre-populated with email from request if a request is associated with the quote. If a request is not associated with a quote, allow the user to fill in the form to send a link to the quotation page.

Add User Roles

Identify role management gem (maybe cancan) to allow the creator of account (user who signed up with credit card) to assign roles and define what the roles can do i.e.

Admin = Request (CRU), Quote (CRUD) etc.

Incorporate New Form Changes Into Inline JS

#39 incorporates placeholders, descriptions, and new classes. Please add the class to the main div tag for the field and if placeholders and descriptions exist, add them to the form like we do with required fields.

Currently the form has styles that splits the form into two columns, only add those styles if the user has selected two columns, otherwise do not add those styes.

Please add the css and javascript.

Lastly, add the new header field

Distinguish types of accounts

$19/mo - 1 user, 5 forms, 100MB Storage, 500 requests/mo (individual)
$49/mo - 3 users, 10 forms, 1GB Storage, 1500 requests/mo (small business)
$99/mo - 5 users, 20 forms, 5GB Storage, 5000 requests/mo (premium business)
call us - custom details call us (enterprise) subdomain with option to point to a subdomain of their choice (build at a later time)

Generate HTML For User On Form#show View

In the event that the user does not want to implement a form render based on a trigger with javascript, we should allow the user to just add the html and css on their own. This will reduce load on our server and allow for easier customization for the user.

The instructions on the right column of the form#show view is outdated. Let's remove it and add the html and css with the option to just add the dynamically generated javascript. So all they have to do is copy and paste either:

<script type="text/javascript" src="http://quotemanager.co/form-inline/1.js"></script>

OR

<form accept-charset="UTF-8" action="http://quotemanager.co/requests" class="new_request" id="new_request" method="post"><div style="display:none"><input name="utf8" type="hidden" value="โœ“"><input name="authenticity_token" type="hidden" value="mMIlx4PoSg+2vJnclVJvxW44IiqatJwaNlpFo88nihs="></div>
  <input id="request_form_id" name="request[form_id]" type="hidden" value="2">
  <div class="form-group">
    <label class="required" for="request_fields_1425617064525_Email">Email</label>
    <input id="request_fields_1425617064525_label" name="request[fields][1425617064525][label]" type="hidden" value="Email">
    <input id="request_fields_1425617064525_type" name="request[fields][1425617064525][type]" type="hidden" value="email">
    <input class="form-control" id="request_fields_1425617064525_request" name="request[fields][1425617064525][request]" type="email">
  </div>
  <div class="actions">
    <input class="btn btn-success" name="commit" type="submit" value="Submit">
  </div>
</form>

Both options should be generated dynamically so all the user needs to do is copy and paste.

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.