Leaderboard
Popular Content
Showing content with the highest reputation on 11/10/2014 in all areas
-
Another processwire relaunch made by neuwaerts: The Website of the Shopping Mall "Galerie Luise" which is located in the center of Hannover, Germany. The mall was recently bought by one of our customers, accom (whose [interims]website is also powered by processwire and launched some weeks ago) and needed some refreshment in terms of design, marketing and strategy. As a result we've created a slightly adjusted logo, a new claim, new print materials and a shiny new websites which mainly features upcoming events held in the galerie luise. http://www.galerie-luise.de/10 points
-
ProcessWire Forum Rules Version 1.1. Last updated November 10, 2014 Purpose of the Forums The ProcessWire forums are a self-help support forum where users can also contribute towards the future of ProcessWire. It is comprised of individuals from across the globe who want to help each other and who are giving much of their free time to do so. Many members have commented that the ProcessWire forums are exceptional in how equally friendly and hospitable they are to those who are very knowledgeable and those who are only just beginning to learn. A word about the rules The rules are here for the benefit of everyone. It says something about a community that we have not required any for four years despite the occasional heated debate. However, as the community has grown it seems only fair to create rules for both members and staff alike. Rules are not the same as laws. They are applied to each individual situation as the need arises and can be interpreted by the staff after reaching a consensus, where appropriate, or they may be enforced quicker in the case of situations requiring immediate attention or that are in very clear violation of the rules. Please respect the outcome of any decisions made by the staff. Rules for posting No Flaming. Never threaten the project, developers or other forum members. Threatening behaviour will be dealt with swiftly by staff and may result in a ban.. No Spamming. Spamming violations may result in your post count being reset, revocation of posting privileges, or even permanent banning from the site. There are several types of spam: Off-Topic posts outside the off topic “Pub” forum. If you wish to make an off topic post, please do this in the “Pub” forum. Multiposting. Multiposting is repeating the same message several times in the same topic, or, making a post directly after another, when you could have edited the additional comments into your first post. Multithreading. Multithreading is posting the same message in several different threads. If you do not receive a reply to your post, it may be that people do not have an opinion or are simply not online. Be patient. Unauthorized Advertising. Any unauthorized advertisements will be deleted and the offending member may be banned. Please note that linking to your company website is permitted in your signature as a plain text link. No discussion of politics or religion anywhere on these forums including the Off Topic boards - there are many other websites where you may discuss these topics. Please avoid very bad language. This is not an adult only forum so treat it as being family friendly. Please respect others’ opinions. Do not state that they are wrong and dismiss them in a derogatory manner. Please try and offer constructive counter-arguments when joining a topic containing a debate. If in doubt, don’t post. Please don't tell other people to go and search if they ask a question that has been asked before. If you like, inform a member of staff or a moderator via the reporting feature and we will do our best to merge it into a relevant topic, or you could suggest in a polite manner so as not to offend that they Google the forums via this link - just remember to be friendly as a link on its own can be mistaken for frustration or impatience. Please do not make demands of the developers of this project or of those who manage the forums. It is disrespectful to the people who give so much of their free time to this community Please contact us if you have an issue with another member or even a staff member - the relevant points of contact are at the bottom of this post Please respect the privacy of others. If a member chooses to use a pseudonym rather than their real name, that is their privilege. Please respect their wishes and do not out them even if their real name is common knowledge. Keep to one identity. Do not create alternate avatars and just stick to the one. If there are technical reasons why you need a new one (can’t rescue the old one, perhaps) be open about it. If you are angry about something, step back, take a breather and try to post a reasonable reply. If you feel that someone is being wholly unreasonable or stubborn, please contact a member of staff. Please try and use Common Sense. No set of rules can cover everything. If you think about what you are posting before posting, you shouldn’t run into any trouble. Remember, this is a forum about a software project, not world peace. It is doubtful ANY argument is important enough to be angry about. Please note that these rules may be updated from time to time. If you continue to use these forums it is assumed that you agree to them. Rules for using the Personal Message system The boards have a simple and unrestricted personal messenger - please use this responsibly. In addition to the above rules regarding posting: Please do not use the personal messenger to threaten anyone, tell them off or send a message that is likely to upset or offend. Please respect every member’s privacy and only PM someone if you feel they will be happy to receive a message from you. If you receive any messages that you feel are inappropriate, please contact a member of staff rather than taking matters into your own hands. Please do not copy and paste private messages into the public forums without the consent of the sendee. Actions we might take At the sole discretion of the forum staff and/or administrators, you may be given a warning if you break the rules. If the infraction is deemed severe enough, you will be banned. If you repeatedly break the rules or are belligerent in your response to staff/admin messages about an infraction then you will also be banned. If we do contact you it will be via the personal messenger system on the forums or, in the event of a ban, we will contact you via your registration email. We will not conduct conversations in public nor will we reply to any public conversations about a particular case. Points of contact If you have an issue that requires staff attention, in the first instance you should report the content using the “Report” link at the bottom-right corner of the relevant post. If you wish to, please contact a particular member of staff directly about an issue. If your issue is about a particular member of staff, please contact Pete and/or ryan via Personal Message. Please don't be put off by these rules. They are in place to help make sure that the site keeps its nice and friendly atmosphere. We're not here to rule with an iron fist - we’re here to discuss ideas and help one another, but we will act when people disregard the rules or ruin the atmosphere.10 points
-
Posting Guidelines In addition to the rules, it is recommended that you read the following guidelines to get the most out of your interactions with this community. Interpreting other members’ posts Our community is a global community and as such posts and intentions can be misunderstood. If you encounter a reply that seems “short” and contains links to other topics that may answer your question, this may be due to the large number of members who use the forums on their mobile devices and want to help but don’t have time for a more complete reply or for whom English is not their first language. Please try and give people the benefit of the doubt when posting. Please do not dismiss their views out of hand (constructive replies are welcome). The forum language is English. We really appreciate the effort everyone makes from countries around the world to post in English. After careful consideration and experience on other forums, it makes sense to have one common language for discussion here so that ideas can be shared and not missed in language-specific forums - the same applies for debates that might get out of hand as we do not want to miss those either. There are more and more country-specific ProcessWire websites cropping up however so if you find that a group of you are in agreement and wish to set up a language-specific forum of your own then please feel free. Suggesting new modules/features Many of the features of ProcessWire have been born out of suggestions by users or discussions within the community, but that does not mean that every suggestion can be taken on board or that it might even be in tune with the overall strategy for the project. If you have suggestions for new features or modules, please feel free to propose them in a simple, open way in the Wishlist & Roadmap forum, but don’t be upset if no one is interested. Developer’s needs vary greatly. Your suggestion might well be something that is better developed as a third party module; in fact that is often the case. You are free to develop that yourself or work with others on a project, or even post a job to get help in the jobs board. However, whatever your idea or wish for a new feature, please do not make your suggestion sound like a demand, or tell the developers they have “got it all wrong,” or that you know what is best for ProcessWire. That is simply unfair to those who have been working on the project for free for years. Answering topics If you can help your fellow members then that’s great! Giving something back to the community in a constructive manner is always welcome. If someone replies in a topic you started and you think it is the best answer then please click the “Mark Solved” button at the bottom-right of the relevant post. Staff may mark a post as the best answer for you or change the chosen answer at their discretion if there is a better/more comprehensive answer later on in that topic. Some of the most prolific posters in the community do not count themselves at experts, but are very good at pointing new members in the right direction - you don’t have to be an expert in order to help out. Please don’t tell someone off for asking a silly question - there is no such thing! Every question is being asked because the person genuinely does not know the answer and might not know where to look. Raising issues or disagreements Nobody frequenting this forum should feel threatened when voicing their opinion as long as they are doing so constructively. Please be mindful however that everyone is unique and may interpret situations differently which could lead to misunderstandings. If you find that you disagree with someone, they may simply have a different point of view - this does not automatically mean that their view is wrong or your view is right. If multiple people disagree with you, it could be that a point has been raised many times before and/or that your point is not clear. Please seek clarification and remain calm or go talk about something else. If someone appears to be being simply argumentative, repetitive or belligerent in their replies then please do contact a member of staff and refrain from being drawn into the discussion further. To repeat, we are not solving world issues here, nothing is really so important that you HAVE to say something. If in doubt, say nothing and read another topic.10 points
-
I have been learning and experimenting with Processwire for a few months now. I have about five sites under development and its going pretty well for the most part. I wear several hats professionally. Doing some real estate photography is one of my sideline businesses. Here is my site: http://seattlerealestatephotography.com/ I received a lot of help figuring out foreach statements, some of the PW API, building a gallery system and getting html fragments to behave. I simply could not have done any of this without some really great help from this forum. Thanks! PS: there are still some more refinements I need to finish but most of the site is ready to go (I hope...)9 points
-
Aha yes now I see. Ryan explains why and he's correct that a InputfieldTextareaCount would be a good/better way to go. I think a way around it could be a check at line #41 if ($this->process != 'ProcessField') { return; } Edit: There's a bug filed on github long time ago. But as with many modules up here, the problem is, dev's have time to make the module but not maintain it.4 points
-
As I've mentioned in this thread there is quite a bunch of websites that we (neuwaerts) are launching these days. Today i present to you: sgh-net.de. SGH is a german specialist for business process outsourcing (i.e. they scan all of your incoming paper mail and make it available digital or take care of your companys invoicing) . The website features plenty of (css)3d and large imagery stuff to play with. Sadly there is no english version yet. Have fun exploring and thanks for your feedback: sgh-net.de3 points
-
For small projects I estimate the final price for the whole project before I start with the consulting. In this case it is indeed including project costs into consulting or - put the other way round - let consulting become part of the project. For larger projects where I suspect surprises I handle this completely separate: Step 1 consulting, step 2 webproject (or other media as required). Obviously in this cases the customer gets it's quote once step 1 is done. At the moment I'm trying to figure out how to secure me against to many rounds of amendments if the customer changes his mind.3 points
-
Hi Dazzyweb Have you ever applied to a job on Odesk or any other Freelance Plattform. If yes you probably realized that they actually try to keep your intros as short as possible which leads to a vacuum in terms of what to client and developer actually know from each other. It is not very useful IMHO. In Germay the law clearly states what is required to provide by whom - the client or the customer. There are two basic form of contract work. The so called "Werk Vertrag" and the so called "Dienst Vertrag" (there are also some other forms like "Werk Lieferungs Vertrag". Depending on what form you want to agree in with your customer the customer himself has to supply all the basic knowledge about his project called "Lastenheft" or you as a Developer have to do it step by step. In Germany itis very important actually to agree in one of those contractal forms to avoid legal problems afterwards. I could not find an English translation - please use Google translate. In some countries this differs but for example in Austria it is pretty much the same. The other question is actually when did you agree to make a contract and what is needed as legal form to make a contract. In some countries you need to agree in written even with a signature and 2 witnesses. In others a contract can be started by doing and behaving like you agreed like in a contract. "Konkludentes Schliessen" - http://de.wikipedia.org/wiki/Schl%C3%BCssiges_Handeln in English it seems to be http://en.wikipedia.org/wiki/Implied-in-fact_contract - like in the US. In both cases it actually must clearly be defined which law will actually applied to before you agree! In Internet Business this is often not easy as you probably have aclients work abroad and are perhaps even collaborating with developers wordwide or those who work from remote locations like Maldives, Bali, India, Cambodia, Vietnam, Thailand etc. It can even be of importance where your actuall work takes place, which means on a server in US, Germany, Singapore etc. This can make a difference too. so better agree before what legal law should be applied to a certain project - For those from Germany and Austria it is called "Erfuellungsort" http://dejure.org/gesetze/ZPO/29.html, http://dejure.org/gesetze/ZPO/12.html. Perhaps someone knows the right terms in English. It would be nice to know how this gets handled in the US and UK as often customers are hosting in those countries. Especially in international Projects or while working with Outsourcing Companies you need to have all kind of Skype Talks, Screensharing, Kakao. Line etc. communications. The best you actually could do is to agree right at the beginning that you ask the client to send you by mail his "Lastenheft" which means his detailed paper where he introduces the project and all his parts in a very detailed form. As most customers even don't know how to write a Lastenheft you could help in quite easily by providing him an predefined form of tasks. Use Google Docs i.e. or any other questioneer form - even Form maker is very good for this, to provide your customers some red carpet to their project. It might be even helpful to design one together here in another Thread. i.e. if your customer wants to have a website it could start with: Introduction Text What kind of a website do you want? Static pages - HTML Dynmic Pages - CMS You could explain whatis the difference. What do you want to do with the website? Get new customers Inform about my business Present my contact Informations Sell my products etc and there are tons of more questions you could prepare in a Form whichwould help the customer to think a little bit more in advance by himself about his project. Don't forgetto ask them about their Hosting Spaces Specs and enabled Tools as it is hard to deploy Processwire on a Server with PHP 5.2 and only FTP access where you can't even change the Nameserver entries to i.e. use Cloudflare or other Supercharging Services. Such a form could constantly be adjusted so that it would fit more and more the customers needs and your interest to know as much as possible about the project. In our experience it helps a lot if the agreement is based on very clear defined tasks, milestones and payment schedules before development starts. We often charge customers already for consultations and until now we had no bad experience with it beside the problem with some customers as mentioned already. It really depends from where they are IMHO. And Joss is absolutly right. Before we were able to produce our first CD we had to provide tons of Demos and again to get the music streamed over the medias. If you don't have something like "Sony" etc behind you it is a job for free and probably with no reward. Music busines is even harder than web business! If you are inetersted in Music Business than I really recommend John Kelloggs Course (Berklee College of Music)- it is so great! https://www.edx.org/course/berkleex/berkleex-mb110x-introduction-music-4981#.VGC0v9Z1NSY Unfortunately I don't know if something similar is also existing for Web Business or Freelance Business and as I would like to know about it much more. In General @Totoff brought it to the point: Talk short - introduce your self and let the customer present his stiff best in written form. Than agree that from this point everything even consultation, answering emails, skype chats and talkks etc p.p. will count like theywould visit a lawyer which usually also has a small free introdcution time of max 30 Minutes and than not seldom it is getting real expensive! By the way try to calculate your pricing so that your project time already gets paid off with the iitial payment! and the rest is profit! At least the initial payment should pay all your bills during that time otherwise you will face a liquirity problem and running your company boat constantly scratching sand banks - which will mean that you won't be able to manoever anymore!3 points
-
This matter is very difficult to handle. I always offer much to much consultation for free and often find that the market simply requires me to do so (as Joss is mentioning). However, I try to do the following: I offer half an hour of getting to know each other and discussing the project for free. That should be enough to make a quote. Preferably this meeting is in my office space to save me time. If during the meeting I have the impression that consulting is required I discuss my impression with the client and let consulting become a part of the quote From my experience it is very important that consulting gets recognized as a separate part of the project with its own budget in order to be accepted. This must happen in the forefront. If you miss this step, you'll find yourself very soon in a situation of consulting for free. Billing it afterwards is nearly impossible. And, in addition, it depends on your company's image: If you are recognized as consulting firm (even if you are alone) it's much easier.3 points
-
@Macrura This is not processwires new automatic page name feature. It is a php function which generates a hex converted string of microtime(). Since it is quite unlikely that the same page name is generated your example will work, but it is not a clean solution. Edit: Forget about the preceding line If you want to generate a page by processwires api with a unique page name, you have to could use the add() method. No need to instantiate a page object in your template. $parent = 'parentname'; $template = 'templatename'; $name = 'foo'; $pages->add($template,$parent,$name); With this function you get pages with the title 'foo' and the name 'foo-[n]'. [n] is a counter which makes the name unique. You could add a fourth parameter to set other page properties like status or so. The fourth parameter has to be an array. $pages->add($template,$parent,$name,array('status'=>1)); Even if you leave out $page->name = uniqid(); in your example the page will be generated unique. In both cases the counter doesn't work properly since it counts all siblings and not only those with the same name.3 points
-
2 points
-
@Mats, that might be an interesting project, but seems to have one major shortcoming. Since it's something you'd use in your templates (or in a module) instead of at the database, it's going to cause various performance issues; you'll have to fetch entire dataset before performing the fuzzy search, or iterate smaller result sets one by one. They even mention performance on the TXP plugin page as a "known issue" (though there might code-related causes for that too, not just the point at which the fuzzy search is triggered). In either case, I guess this is fine as long as you know you won't have to consider scalability, but for me that's a pretty big no-no ProcessWire does perform in-memory searches too, in which case this would make more sense, but at that point you'll be filtering a pre-fetched list of pages, which kind of misses the point of fuzzy search IMHO.2 points
-
Templates need corresponding fieldgroups...Something like below should do it (not tested, written quickly!) //new fieldgroup $fg = new Fieldgroup(); $fg->name = 'template-category'; $fg->add(wire('fields')->get('title')); $fg->save();//save the fieldgroup //create a new template to use with this fieldgroup $template_category = new Template(); $template_category->name = 'template-category'; $template_category->fieldgroup = $fg; //add the fieldgroup we created above $template_category->label = 'Category Template'; //template label $template_category->save();2 points
-
lisandi, just a piece of advice: continuing in behaving like you do at the moment, always and kind of aggressively advising the same service, and to talk smack to moderators won't make you any friends here.2 points
-
2 points
-
That is great! If you could make a little tutorial about how you did that, that would be awesome. What did you start from (scratch or Reno theme)? Is it a module? Maybe a quick ordered list style of steps you took to arrive at this wonderful interface... I am always looking for some learning and am eager to learn how to modify backend interface. Learning from your recent experience should be a pleasure. Of course if you got a little time for that.2 points
-
And too bad about WordPress if that's what they are using. I don't think they even know about PW. I will have to have a talk with them sometime.2 points
-
The Module Blog for ProcessWire replicates and extends the popular Blog Profile. Blog is now in version 2. Please read the README in the Github link below in its entirety before using this module As of 20 December 2017 ProcessWire versions earlier than 3.x are not supported Blog Documentation is here (Work in Progress!) See this post for new features in version 2 or the readme in GitHub. To upgrade from version 1, see these instructions. ################################################## Most of the text below refers to Blog version 1 (left here for posterity). Blog version 1 consists of two modules: ProcessBlog: Manage Blog in the backend/Admin. MarkupBlog: Display Blog in the frontend. Being a module, Blog can be installed in both fresh and existing sites. Note, however, that presently, ProcessBlog is not compatible with existing installs of the Blog Profile. This is because of various structural and naming differences in respect of Fields, Templates, Template Files and Pages. If there is demand for such compatibility, I will code a separate version for managing Blog Profile installs. In order to use the 'Recent Tweets Widget', you will need to separately install and setup the module 'MarkupTwitterFeed'. Please read the README in the Github link below in its entirety before using this module (especially the bit about the Pages, etc. created by the module). I'll appreciate Beta testers, thanks! Stable release works fine. Download Modules Directory: http://modules.processwire.com/modules/process-blog/ Github: https://github.com/kongondo/Blog You can also install from right within your ProcessWire install. Screenshots (Blog version 1) Video Demos ProcessBlog MarkupBlog Credits Ryan Cramer The Alpha Testers and 'Critics' License GPL21 point
-
1 point
-
This is caused by the "minimal-ui" viewport setting. You're propably right that it'd be better to remove it as the purpose of this setting is hiding the chrome for webapps or pages loaded within webview.1 point
-
Ok, I just pushed an update to the modules repository, also bumping the version number to 1.0.3. Could you please confirm that this fixes the problem for you? @Soma: I just tried to force the error in a frontend form but that worked fine instead. The problem in this case was in the function hooked after InputfieldTextarea::getConfigInputfields() which was only called in the backend. Thanks anyway for your - as always - very helpful suggestion! @Martijn: Thanks for the suggestion. I'm not sure whether this would be too restrictive because there might be handy uses of this module in the frontend - which would then be forbidden. I currently much favour to convert it into an Inputfield on it's own. Thanks a lot to all of you for your help.1 point
-
That might explain why it is happening in my front end form. I have tried that edit and it seems to work. I haven't checked thoroughly whether it causes any other issues in the process, though I cant think what problems it would cause. boundaryfunctions - you should be able to check those yourself okay because it is not a question of having form builder installed. Thanks guys!1 point
-
I talk with them and then in my quote I offer a fixed price for a "consulting part" as a basis for my concept. The price itself is based on my hourly rate indeed. If the case is more complicated and they need marketing consulting in general (not only for a website) I offer mostly between one and three days pure consulting to put them on track. This can comprise workshops or some other kind of more elaborated consulting.1 point
-
Actually, it is too short. The get-to-know-talk is kept snappy in order to let the main briefing talk become a part of the paid contract instead of offering it for free. The reason is, that from my experience there is not much difference between a briefing (in order to learn what you have to do) and consulting. So I try to make it part of the contract.1 point
-
One approach that can work (and can scale) is using native mySQL - like soundex - to find a subset of results and then applying some php processing to them. For example, @teppo's original results in his opening post, sorted by Levenshtein distance ascending in php, would give very good results very quickly. And with a 'limit' in the selector, you can be sure of scalability.1 point
-
I suspect that the permission returns an object (NullPage). So your if statement will be: I guess that if you append ->id to your if statement, the outcome will be the integer 0 and thus false. if($this->permissions->get('new-permission')->id) { // higher then 0, the permission (Page) does exists. } else { // 0 If not exists, the ID comes from the NullPage } ps, I didn't checked what I typed here (not on my working machine right now)1 point
-
Hi Nico We started years ago like you and than we moved to Thailand and things changed as the main problem was the payment of the customers and another huge issue is often the content for a website which does simply only exist in the mind of some customers but not in written. Therefore we had to change our workflow. We do nearly no advertising as we get mostly contacted directly by customers or referred from recent and former customers. The two bold marked lines in the above quote is very important if working with especially German customers and customers from Austria. Otherwise you have to invest a lot of time in running after your money which you probably will never see! That is simply a reality and it is not at all good. If this happend to you already than you are not alone. How to deal with none paying customers wold be the Topic of another off topic post! You have to consider different things before you start your work especially on web project: 1. How long will you discuss the project with the custome. We had customers who liked to discuss more than actually deliver a clear "Lastenheft" what it is called in Germany. It is a legal MUST for some kind of work and the customer has to provide this to you and it is actually not your unpaid job to do this job for the customer. 2. Germany is a difficult LEGAL case to as even here in the forum you are not allowed to give "Rechtsberatung". So you do really good to contact a lawyer who is knowledgable in Freelance and Internet law first and setup some AGB with him. Here you can clearly clarify how you handle a project and what are the responsibilities of a customer and those of you and also you can define on who has to provide what at what time frame and in waht form etc. Lots of things should be considered here - especially in Germany to make it later much easier and cheaper for you to go to one of the "Amtsgerichts" and get help for the payments from there. 3. We never ever had problems with payments from US customers. They actually pay us always (since 2002) in advance or in advance after clearly defined milestones. I really don't know why there is sucha big difference depending on where the customer lives or also where he is coming from. You should consider this to before you make your quote. 4. Another issue you are having is with taxes (which are again quite difficult if you are living and working from Germany!) In other words you should also contact a good "Steuerberater" before you start working and writing bills for customers. You also must take in account with whom you are working or collaborating and how you charge those external works or if you employ people to do this. 5. Where will you develop the project. On your server or on theirs, even it is an existing live site project i.e. which needs modifications. 6. Communication with the customer is very important and often customers tend to give you more and more tasks after they agreed that you do the website for them. Make them very clear - in an early state - or even better write it in your "AGB" that you have to make additional agreements before you start on those tasks. this is only in short and there is still more to consider. 7. If you provide Hosting consider the Legal laws and requirements of the country you live in, the one you work from and the one you are hosting! Their legal requirements often differ a lot. Security, Privacy, Copyrights Infringements, Forum, Comments Responsibilities, ... etc are things you will have to deal with beside running a Server Environment and the websites in it. -- Our workflow is like followed: 1. The customer contacts us (usually - mostly referrals) - sometimes we contact the customer (mostly customers which host with us already) 2. We usually a skype chat (also because of the distance to most of our customers) - about 1 hour. We have a prpared list of questions for that! 3. We ask the customer to send us his detailed "Lastenheft" and give us access to things which help us to make a good quote i.e. a former side if existing, images they want to use, content they have already written and want us to insert them etc. 4. We write a quote and send it to the customer including our AGBs and Payment Terms and Schedules. Beside fixed Prices we usually charge by man/hour which depend on how much a customer pays in advance to us. From that amount we deduct the worked man/hours. We make no difference on what kind of work it is as one man/hour is 60 minutes no matter if itis design, editing, writing, programming etc. but This points varies from company to company. 5. The customer can agree or not agree in a given timeframe (this should be clarified in your quote) 6. In case we don't hear anything from that customer in a week we usually contact the costomer by phone to talk to him personally. ( we had very good experience with that as you can actually "hear" if the customer is happy with your quote or not and you can much easier adjust i.e. usually they have also asked others to send a quote. 7. Try to get a written consent. This is not always as easy as it sounds. We usually ask the customer to send us back a singned quote form - you can put a line on it which says that the customer agrees with it and the AGB etc. - We also provide NDAs and sometimes the customer does it so this has to agreed to and signed at that point often even before making the quote or getting additional materials about a project. 8. We wait until the customer makes his first payment - well sometimes we are silly and start working also in advance but often than it results in stuff which gets not so easy paid, so better simply be patient and wait. 9. We start working on the project until the prepaid hours or on fixed prioce projects until a certain milestone. We think it is important that even it is a fixed price project that you have a good timetracking tool. It helps also you to see where what time for what purpose gets spend and if that task is billable or not. 10. If the project is longer than a week we contact the customer every week and he gets a report of work done and the hours already used. - It is easy to do if you are using a timetracking tool. This gives the customer transparency in what you are actually doing and where is money is gone. 11. At Milestones or also when the final of the Projekt has been reached we have a short skype with screensharing with the customer. 12. Often customers actually help us to get their content in. Before they do this they get a training. As long as the project is not finished they will have no admin rights (only editor rights) and the site is usually on one of our server or cloudspaces we create for the project. 13. If there is no more funding available we stop work even it is sometimes hard as you really like what you are doing, but be aware that you probably don't get paid if you did not agree in it. This can happen with fixed price projects but also with man/hour projects, while we experienced that the man/hour model is way more flexible to handle those things. 14. We make another agreement and continue wrk like before i.e. to the next milestone. 15. The Project is ready and optimised on our servers and ready to be moved to the customer server (if he still wishes this - often customers like to stay as we offer free hosting from project start for one year incl update support for security issues which they often don't have on their former hosting spaces. But this is really up to you and keep in mind that hosting websites means a lot of work, even it looks so easy to do! Remark: we also don't host any website so we check before if it would suite our servers. Sometimes it is simply better that they host on a cloudspace which can grow with their site - we tend to move actually all our customers in future to do this kind of hosting to reduce our workload and to limit the growing legal problems wile providing hosting to customers. 16. The customer can check the full functionality in and out as long as the website is still on our server. 17. The Last payment minus the one for moving the site to the customer server which gets listed always as a seperate post gets paid. If the customer is not moving a site this also does not need to be paid, which means we don't calculate the movement as a project cost itself. It is an additional service we provide! Some hosting companies (bigger ones) also provide a moving service to their servers which is often free. If customers are using them it is also fine as they will be responsible that the site will work on their servers lateron too. 18. Support and Maintenance. We agree with customers that we give or not give support. 19. In case we give support there is another agreement which clarifies what gets supported. In case of no support we are done and out of the project and the customer and his site ar on their own. To ensure that none of our customers which host with us gets harmed by an attact to websites which are not supported we include the basic security update support for core and modules which we installed into our hosting plans and charge only for support on external servers - the prices depend again on time and also on the form of access ftp/ssh (which is a huge time difference when doing work) 20. We archive the project and send the customer (or give access to the download) to the customer. Finished1 point
-
Get enquiry, chat to them about options (and whether they actually need a custom website and not squarespace or the like (I hate making boring websites)) Make quote if accepted: issue invoice and get 20% up front Work on design and build Host myself on a shared server or on clients server. Pay remainder See if they want a service agreement for future tweaks or upgrades1 point
-
I have nothing more to add here except to say that I have made my position clear and that we have now posted clear Community Rules & Guidelines in our News & Announcements forum. If anyone has any issues whatsoever, please refer to that topic to determine the appropriate course of action.1 point
-
Pretty easy in jquery and I've done it on this site: http://ciaraphelan.com/ Pretty much just add an event listener to scroll and when the scrollY is over a certain amount you trigger something (and trigger it back for less than that number). I wrote this a while ago so you might be able to do something more succinct: $scroll = 0; $(window).on('scroll', function(e) { if(window.innerWidth >= 768){ if(window.pageYOffset >= 300){ // desktop menu collapse // do something }else if(window.pageYOffset <= 299){ // do something back } } });1 point
-
kogondo was a little faster, anyway also not tested, just grabbed from a module i was working on. This also includes the creation of the page containing the template. $fieldgroup_category = new Fieldgroup(); $fieldgroup_category->name = 'template_category'; $fieldgroup_category->add($this->fields->get('title')); $fieldgroup_category->save(); $template_category = new Template(); $template_category->name = 'template_category'; $template_category->fieldgroup = $fieldgroup_category; $template_category->noChildren = 0; $template_category->noParents = 0; $template_category->slashUrls = 1; $template_category->urlSegments = 0; $template_category->pageLabelField = 'title'; $template_category->save(); $page_category = new Page(); $page_category->template = $template_category; $page_category->parent = 1; $page_category->title = 'Category'; $page_category->name = 'category'; $page_category->process = $this; $page_category->save();1 point
-
A skeleton as starting point could be: public function HookSetupPageName(Event $event) { $page = $event->object; $options = $event->arguments(0); // maybe a check if the page belongs to a specific template, or not, and if not, return to core function if($page->template != 'myspecifictemplate') return; // your code here ... // at the end declare that you want replace the core method with your result $event->replace = true; $event->return = $name; return $name; }1 point
-
Hi Ivan, Note that it is not working admin theme ... I have done it only in vector graphic software. I would like to make it a real admin theme but now I don't have much time to do it. however i can say something more about why i designed it the way i did1 point
-
Why the not list the users without the region selector? $users->find("template=user, include=all"); Or if you want to display all users that have a region assigned (matching users with a non-empty user_region field): $users->find("template=user, user_region!='', include=all");1 point
-
So your $inputregion can be multiple regions? If it's an array you can implode it with a pipe symbol: $inputregion = implode('|', $inputregion); // creates something like 'region1|region2|region3' So the selector looks something like this: $users->find("template=user, user_region=region1|region2|region3, include=all"); and it matches users with either of those regions1 point
-
yes i did Diogo, paper on grey background and buttons are based on material design but not every thing is based on it. for example forms and tabs are different1 point
-
Give tosrus a try. You might get better results. It is also licenced under the MIT licence so you can use it for commercial use without paying for a licence although a donation is appreciated by the author if you do so. It supports scrolling and swiping. You can use Hammer.js with it for touch gestures.1 point
-
is this not the support forum? https://processwire.com/talk/topic/6727-field-generator/ in the video it clearly shows 'name' as the field being targeted. Could be a compatibility issue if it is not working.. maybe you have to check OpenSSL dependency? you could easily write a much simpler module (see example code below), or use processwire's new automatic page name feature (i'm using it a lot).. here is an example of a simple module to create a randomy page name, using PHP uniqid() function (untested): <?php public function generateRandomName() { if ($this->input->get->parent_id == 1019) { // 1019 = some page where we want to auto-generate child page names $page = new Page(); $page->parent = $this->input->get->parent_id; $page->template = 'child-template-name'; $page->name = uniqid(); $page->addStatus(Page::statusUnpublished); $page->save(); $this->session->redirect("../edit/?id=$page"); } }1 point
-
Also note that while we discuss field/template context, Ryan -the ProcessWire(PW) creator-, has been updating the development version of PW to allow for even more field properties to be set on a per context (template) basis. Up until now this is limited to: field label, description, visibility, column width, and required state. Read more about this here: http://processwire.com/blog/posts/processwire-2.5.7-core-updates/#field-template-context-now-available-for-any-field-property Be sure to keep an eye on the blog posts, and/or the ProcessWire Weekly, and/or subscribe to the PW newsletter.1 point
-
Let's use names of CMS systems Drupal Wordpress eZ Publish DotNetNuke eZ Publish Mambo Pimcore1 point
-
I have two clients and spoken to other companies who have hosting with their previous designers and have had real problems getting out of their relationships with them - the designer not answering the phone, changing passwords and so on. I have one case where the client has registered the .co.uk website some years ago and has just discovered that the designer registered the .com and is refusing to let it go. I am recommending a small, narrowly targeted nuclear missile. Consequently I make a point of "I will not tie you into me by buying your domain name for you or insisting you host with me" - that sort of thing. Apart from not wanting the hassle when the server goes down, I would just be a reseller, not a hosting company - it feels like cheating the client. I want the client to feel that they can dump me in the future (and vice versa) if the relationship breaks down. Loyalty is the goal - but loyalty out of mutual respect, not by contract.1 point
-
And besides all what @Totoff has said: regarding the german tax (Steuer, Finanzamt), it very differently handles those things. If you are 'only' working as a designer, you maybe able to write 'only' bills with MwSt 7%, but if you also do other things, like selling webspace etc. this is another business what need to take MwSt 19%. And really, you will end up with double and triple work on this (tax, finanzamt) site if you go into this hell. (And of course you need to work with a good 'steuerberater', and he will bill you the 'double', maybe.) I never have heared about something functional in regards of "making money without doing stuff". (at least not for people without some million euros/dollars, - also not for people with some million euros/dollars and with morality)1 point
-
new site just launched... http://www.charleswuorinen.com/ major modules that were essential: admin template columns AIOM+ colorpicker (for custom page background colors) Font Awesome Page Label Form Builder ProCache jQuery DataTables Modules Manager Changelog Get Video Thumbs Field Change Notifier Hanna Code Redirects Template Notes Version Control Some custom modules for auto page titles, and custom page for managing works Front end Bootstrap Masonry/Isotope Flexslider dataTables Magnific Popup Soundmanager2 Fresco lighbox html5 video (using jackbox) extensively used Hanna codes to output lists of links, PDFs in various places; hanna code is also outputting the music players, scrolling flexslider galleries etc; the compositions list is using dataTables, and shows extra info in a magnific lightbox, which loads from ajax... once again, a site that really could not have been realized without PW!1 point
-
Just wanted to throw in my two cents. If you come at it as a front-end developer that's a complete beginner to CMSs, then PW should be very easy to get going. It's built around working the same way that existing web technologies work… Pages map in the same way that URLs do… Template files are just plain HTML/PHP files… the API is largely the same as a front-end API (jQuery)… and so on. So if you know your basic web technologies outside of CMSs, then you won't find a simpler system than ProcessWire. The problem is most other CMSs don't work that way. So the line gets more blurry when you've become used to the terminology and approach of another CMS, because PW can be quite different. Sometimes you have to unlearn what you know from elsewhere in order to appreciate the simplicity of PW. People are always trying to find complexity that isn't there, especially those that grew up on other platforms. PW is a system that rewards you by being curious. We aim to show you how to fish so that you can catch the big fish. We're not here to catch the fish for you. You don't have to know anything about fishing, but you should know how to yell for help if you fall in the water. And you should be willing to learn by example. I learn best by example, so this is the way I tend to teach too (and I recognize not everyone learns the same way). PW is a CMS and CMF, not a website builder. If you are curious and willing to explore, you'll find it is very simple indeed. Certainly far simpler than even WordPress in creating a custom website. You do have to come from the point of view of "I want to create and have the system adapt to me" rather than "I will create something based on what the system provides." If you already know what you want to create and it's something unique, you won't find a simpler path to get there than PW. WordPress is a different beast, in that it's basically saying "YOU WILL CREATE A BLOG or modify this blog and call it something else." Some people like that underlying structure… "okay, we're starting with a blog, what can we do with it?" Others do not like that underlying structure. Our audience consists of those that want to have a system support their original creation rather than mash up an existing creation. There was a PDF posted earlier that I think hit upon some good points, and I appreciate the effort that went into putting it together. The fictional character being scripted in the dialog is not our target. I can go into specifics if anyone wants me to, but I was definitely left feeling at the end of it that we have to be careful about hand-feeding too much or else we'll start attracting people beyond our support resources. Folks that want the fish cooked and filleted rather than folks learning to fish. Perhaps in time we will want to attract more of the consumer-type audience, but currently I don't know how to support users looking to find all the answers in a sitemap file. Keep in mind that unbridled growth is not necessarily desirable. Most of us don't get paid for most of the work we do here and we do best if we grow in a more healthy manner, attracting more thoughtful designer/developers that are here to learn and also contribute. Obviously the author of the PDF is one of the thoughtful ones (and the PDF is a great contribution), even if his fictional character isn't necessarily, but we'll welcome him anyway. But we will definitely be going through the PDF in more detail to learn and improve from it where appropriate, while keeping our audience in mind. I think we're doing something right, because our audience is growing rapidly. I'm nearly full time on ProcessWire now, and it's still difficult to keep up with everyone. At present, I like that our audience is largely open-minded, curious and thoughtful designers and developers. Somehow we've attracted an incredible quality of people and that's what makes this place great. We could not ask for a better group of people here. I'm reluctant to lead PW towards a website builder direction because I think that's when the quality of the community could go down, as people come looking to eat fish rather than learn, catch some fish, and throw some back. The reality is that part of our long term goals include converting the rather large audience that has outgrown WordPress into ProcessWire users. I'm convinced that we do that by giving them more ProcessWire, and not more WordPress. But at the same time, we always have to keep an eye on WordPress and learn. They've been lucky no doubt, but they are also doing many things right. So we have been and always will be working to make the WP-side of users more comfortable in ProcessWire, while also trying to help them grow by distancing them from the limited WP mindset.1 point
-
Sorry I was a bit late to give you the details on benchmarking. Got busy with different stuffs. Here is the code that ran on around 701407 `some-page` and `different-page` of `1158` pages. There is more types of pages, so probably the total of pages will be more. <?php require dirname(__DIR__) . '/index.php'; $pages = wire('pages'); $t = Debug::timer(); $items = $pages->find("template=some-page, limit=1, get_total=count"); $total = $items->getTotal(); echo "<p>Found $total some-pages in " . Debug::timer($t) . " seconds using count</p>" . PHP_EOL; wire('pages')->uncacheAll(); // calculate total using calc method (default) $t = Debug::timer(); $items = $pages->find("template=some-page, limit=1, get_total=calc"); $total = $items->getTotal(); echo "<p>Found $total some-pages in " . Debug::timer($t) . " seconds using calc</p>" . PHP_EOL; wire('pages')->uncacheAll(); $t = Debug::timer(); $total = $pages->count("template=some-page"); echo "<p>Found $total some-pages using count() in " . Debug::timer($t) . " seconds using count</p>" . PHP_EOL; wire('pages')->uncacheAll(); $t = Debug::timer(); $items = $pages->find("template=different-page, limit=1, get_total=count"); $total = $items->getTotal(); echo "<p>Found $total different-pages in " . Debug::timer($t) . " seconds using count</p>" . PHP_EOL; wire('pages')->uncacheAll(); // calculate total using calc method (default) $t = Debug::timer(); $items = $pages->find("template=different-page, limit=1, get_total=calc"); $total = $items->getTotal(); echo "<p>Found $total different-pages in " . Debug::timer($t) . " seconds using calc</p>" . PHP_EOL; wire('pages')->uncacheAll(); $t = Debug::timer(); $total = $pages->count("template=different-page"); echo "<p>Found $total different-page count() in " . Debug::timer($t) . " seconds using count</p>" . PHP_EOL; wire('pages')->uncacheAll(); $t = Debug::timer(); $first = $pages->get("template=some-page, sort=-some-page_created"); echo "<p>Found {$first->title} in " . Debug::timer($t) . " seconds</p>" . PHP_EOL; wire('pages')->uncacheAll(); $t = Debug::timer(); $first = $pages->get("template=some-page, sort=-some-page_created, get_total=0"); echo "<p>Found {$first->title} with get_total=0 in " . Debug::timer($t) . " seconds</p>" . PHP_EOL; wire('pages')->uncacheAll(); Result <p>Found 701407 some-page in 2.4525 seconds using count</p> <p>Found 701407 some-page in 2.7801 seconds using calc</p> <p>Found 701407 some-page using count() in 2.6784 seconds using count</p> <p>Found 1158 different-page in 0.0328 seconds using count</p> <p>Found 1158 different-page in 0.0166 seconds using calc</p> <p>Found 1158 source count() in 0.0028 seconds using count</p> <p>Found some title in 3.5964 seconds</p> <p>Found some title with get_total=0 in 0.0188 seconds</p> Indeed the last one has shown a tremendous improvement when kept `get_total=0` . Thank you1 point
-
Thank you @Ryan for sharing the information and test scripts you did. I will try to benchmark on the coming days with the same. I have more than 50K pages .1 point