In my application we have a summary page having a link to take the user to the different pages of the application. For example, we have separate pages for collecting personal details, address details, education details etc., and there is a summary page giving the summary of a student's data. Users of the application will go to the summary page and then navigate to any individual pages in case if the data is not filled up yet. After the user goes to the individual page, they can enter the required details, and upon saving the entered details, they will be eventually redirected back to the summary page.
I have implemented the above functionality as below at the moment,
When the user clicks on a link to the address details page from the summary page, I will pass the redirect url as a query string to the summary page, and upon the user saves the address details in the address page, I will redirect the user back to the summary page using the redirect url passed on the query string.
Each individual pages have a common base class
Redirection logic is present in each individual pages now. This logic checks if there was a redirection url present in the query string, then if present it will direct the user to the summary page after the user clicks on the save button on the current page.
I feel the above solution is elementary, there is potential for adding new pages to our application.
I wonder if there is anyway to implement the above requirement in a elegant way in such a way that the redirection logic is separated as a angular service, route or any other angular technique so that we dont have to do any thing extra for the new pages that will be added in the future.
Related
I am using Class Based View, and in this particular form (based on FormView) I want restrict access to Logged Users only. It somehow works, but I want after user give login / password go back, redirect to particular site - for example named "my_form" or other (could be home page), but in this case, after login Django Admin shows. I need its functionality only for login and I want go back to desired location, 'my_form' page.
How can I achieve this? Don't want decorators here, as I want to use this special Mixin.
class EmployeeLocationFormView(LoginRequiredMixin, FormView):
login_url = 'admin:login'
redirect_field_name = 'my_form'
I created a custom form on a shopify page and when the submit button is pressed i want all the data within the form fields to go to another page that is a request form where the user would enter data and upon submission the data will be emailed instead of buying anything. How is this done in shopify? the page that i'm talking about is this one
https://pharaohmfg.com/collections/billiard-pool-tables/products/luxor-pool-table
You can redirect to another page with a custom form but the email will not be send since you are required to use /contact#contact_form as the form action.
One way to bypass that is to submit the form as a contact form and redirect the user upon form success. Please note that this way if you submit the form more than once you will get a google challenge for spam protection which is not user friendly.
Another way is to create a custom APP and using a proxy to submit to that page and handle the request from there.
Or an another option is to use a third party app of some sort and use their form builder ( hopefully allowing you to tie the product variants in some way to the actual form ).
There are free services like formspree that allows direct submissions to an email but I don't know what are the limits there.
I am developing a module in Prestashop. I want to know how to logout user programmatically, and how can I redirect a user to custom url?
You can use
$customer->logout();
Or
$customer->mylogout();
The first one is a complete logout, the second one will leave affiliate information in customer's cookies.
Both methods fire actionCustomerLogoutBefore and actionCustomerLogoutAfter hooks, so you can attach to them for your redirect.
Speaking of redirect - it depends on what page you want to redirect your customers to, if it's an internal page, you can use either:
$redirect_link = Context::getContext()->link->getPageLink(...); // or "getModuleLink", etc., see classes/Link.php for details.
Or
$redirect_link = $this->context->link->getPageLink(...);
You would then use either redirect, redirectLink or redirectAdmin (probably the other two, as redirectAdmin only makes sense if you're in Back Office) of Tools class to redirect to that link.
I have seen some sites where you search (in Google) for a particular item category and when you click the link found in Google it automatically goes to the site clicked with the search criteria filled in displaying the categorised products.
Hypothetical Example
Go into Google type in Sony TV , click to search.
Results are displayed.
Clicking one of the links takes me to a website which shows all the Sony TV models beginning with AA.
Looking at the search options on the page some fields have been automatically filled in (in other words if you did this search manually the site would prompt you to enter some search criteria) - Not sure if this is relevant but thought to mention.
How is this done? Do i need to setup something in our Google account to get the same results?
It's fairly simple. You pass parameters in your URLs that identify the product, and then you just read the URL parameters when pre-populating the search form on the page. When building your site / sitemap / internal & external links you use those page URLs and Google will naturally pick them up.
In your example, you search for Sony TV. One of the results may be
example.com/index.php?product=sony-tv
The website has the variable sony-tv, which it gets from the URL and pre-populates on the search form.
The important part to note is that the site will have built its URL structure in this method typically and the page you're presented with just happens to look like the site dynamically searched based on your query (it hasn't).
I have a mobile XPages application which uses the single page application control (xe:singlePageApp) of the XPages extension library. The application also uses a workflow engine which sends out emails with links to documents to users so they can approve requests.
The link URL is composed like
http://hostname/app.nsf/m_page.xsp?action=openDocument&documentId=2A2A#requestForm
where requestForm is the name of the appPage containing the form to display a single request document.
If the user is already logged in, the browser opens and displays the document as intended.
However, if the user is not already logged in, the Domino login form is displayed (session based authentication). When the user then logs in, the same XPage is opened, but to the default page (selectedPageName attribute of the singlePageApp) instead of the appPage with the pageName requestForm. The reason for this behavior is that after submitting the login form the anchor part (#requestForm) is no longer present in the URL the browser is redirected to because the #requestForm-part is never sent to the server where the redirect URL is computed in the first place.
Possible solutions I can think of are
put the intended pageName in a real URL parameter (like documentId), parse the URL and modify the browser location (from ...&documentId=2A2A&pageName=requestForm to ...&documentId=2A2A#requestForm)
check the URL for the existence of the documentId parameter and modify the browser location (add #requestForm) if it is present
modify the Domino login form as per Jake Howlett's Suggestion (which is a not always permitted)
I was wondering now if there are more elegant solutions to this.
I would take the first option in your case. But instead of handling the url change at the client-side, I would handle this on the server-side. Otherwise, client will load the initial page once and submit an additional request to the server.
On the beforePageLoad event:
var url:XSPUrl=context.getUrl();
if(url.hasParameter("pageName")) {
var pageName=url.getParameter("pageName");
url.removeParameter("pageName");
facesContext.getExternalContext().redirect(url.toString()+"#"+pageName)
}
This will do the redirection before loading the page.