Leaderboard
Popular Content
Showing content with the highest reputation on 04/10/2013 in all areas
-
I thought that the MODX move was interesting too (as were the EE changes a few months earlier). I don't think it affects anything about ProcessWire, other than that it seems to drive more users here. We won't be following the path of MODX, in case anyone was worried. We get paid by the sites and apps that we develop with ProcessWire, and by the commercial support of modules like FormBuilder and ProCache. I don't have any inside knowledge on the changes at MODX, and may not understand the full scope of them, but here's my outsider opinion about it… I can understand why it is shocking to folks that use MODX, because it kind of destroys the perception of MODX as being a big and stable player. In my mind, they were a big and successful company, and I think that was a lot of other people's perception too. Why would they ever have to rely on a little hosting company with a toilet name and an HTML5 logo? MODX is way above this, or so I thought. The changes instead reveal reality that's probably always been there… MODX is a labor of love rather than profit, as most open source projects are (including us). But MODX has grown big enough in user base that keeping the whole ship afloat means having a team people that dedicate lots of time to it. These people have to be paid in order to take care of their own families, etc. So it looks to me like they are just making the tough decisions necessary to keep the team together and stable. It's not pretty (especially the Siphon part), but digging up the floor to fix the plumbing never is. WordPress has proven that hosting is a safe and viable business model to sustain a big open source project. Supporting other CMSs on the Siphon platform is probably just about risk reduction (put the eggs in a few different baskets… err, siphons… rather than all in one) and it would probably make a lot more than it would cost. None of us should view CMSs as religions. I'm glad that I can run Windows apps on my Mac now, when I need to; that doesn't make me prefer Windows. I'm not sure that having web hosting that can only run MODX would be worthwhile. The value proposition with WordPress hosting (which can only run WordPress) is entirely different. Most people using MODX (and ProcessWire) are professionals that have multiple tools. Most people using WordPress are consumers that know how to write, but don't know anything about web development. Given the different audience, I don't think MODX could duplicate WordPress's hosting success by only hosting one product. But I do think they can be successful by catering to the needs of the audience, which is rarely glued to a single product. If diversifying the eggs among multiple baskets helps to drive development for MODX, then that can only be a good thing. Hopefully that's their intention. If their reality really is as it sounded, then the changes were probably good, even if shocking. I think the fear that people might have is that this is somehow driven by investors trying to monetize the software for themselves. But that just doesn't seem to add up in this case. Instead it presents a lack of sustainability in their existing system that had to be fixed (which is itself shocking). I'm just surprised that: 1) They aren't as big and successful as I thought; 2) They don't have a stronger source of income; 3) Any of this was necessary; and: 4) They told us. I don't think that folks should abandon MODX because of the changes. Their team has put themselves in a vulnerable spot and we should support them. While I don't totally understand their changes, it seems like they are doing this to find sustainability more than anything else. While I support and wish the best for MODX in their changes, I also want to be clear that we will not be following that path. We're already on a beautifully sustainable path here, thanks to all of you.7 points
-
Hi pwired, I like what you said: Here's what I learned over the last 9 years of making money online, allow me to use the analogy of a sport I love: sailing. If there is no wind, no use putting your sailing boat out on the water... If there is wind, anybody who puts a boat out on the water will be able to move, and the better sailers just go faster up and downwind. No matter how good a sailor you are, if there is no wind, you are just as lost as anybody else. So what do I mean with this? There are lots of markets out there, but you need to find a market where people are spending money everyday, this is the wind. Once you found a spot like that, all you need to do is get your boat out on the water and catch some of that wind. OK, so you want to make money with pw and internet, here's a business example from the wordpress world: www.clickbump.com Scott Blanchard, the clever brain behind it, focuses on a number of things that make wordpress sites driven by his stuff, very fast and do well in the serps. Even though I sort of hate wordpress, and refuse to use it for my important sites, I have bought his stuff and a number of his templates on top, just to figure out what works well and to be able to port that stuff to my sites. So if I would want a business model like this I would focus on making nice ready made sites or modules that would work great and help people get results in the serps. The only trouble of course with this business model is that the current wind is mainly on the wordpress lake, but if you can make things easy enough for people, you would catch some of that wind, there's strategies to do that. OK, let me think along in another direction. How about you check the google adwords tool for certain keywords, you want keywords that have a lot of traffic and relatively high cost per click in google adwords. Once you find that, you know this is a market where money is spent, simply because these advertisers would not keep spending if they would not make money with it. Next you do a search on google for the very same keyword and you check the top 3 adwords advertisers - check out their sites and see what is lacking there. On page seo wise, or on site engagement wise,etc. etc. Next you could do two things (at least of course): 1 - build a site around the niche and get it to the top of google search results, then contact the advertisers and offer them the site for rent (once you are in the top 3 of organic results you will get nice traffic and be able to show your numbers and rent the site out for a percentage of the traffic x cpc. 2 - contact the site owners and tell them you can help them with redesign of their site so it gets more visitors and/or get more action out of current visitors. Now a third option: - build kick ass modules for pw and charge for them. I would already have some ideas for at least one kick ass module that I just bought today from the wordpress world that would really benefit anybody with a site out there that is currently driven by pw. As you see I am not so much focused on what you are good at, but how to apply what you want to do at where people are currently spending money. Of course you need to be good or get good at coding and stuff, but a guy with a focus on existing needs that can be met, in my book always beats the guy who focuses on what he wants to do. Hope this helps, may the winds favor your business sails!4 points
-
EDGE is a responsive site designed by Salvato + Coe Group and developed by myself: http://edgela.com/3 points
-
With just a little more work you could put that function into a module that runs on page save which would then be ideal for your needs For example, something like this: <?php class SortPageTitles extends WireData implements Module { /** * getModuleInfo is a module required by all modules to tell ProcessWire about them * * @return array * */ public static function getModuleInfo() { return array( // The module's title, typically a little more descriptive than the class name 'title' => 'Sort Page Titles', // version: major, minor, revision, i.e. 100 = 1.0.0 'version' => 100, // summary is brief description of what this module is 'summary' => 'Sorts pages by title by second word if first word is "a, the, an" etc.', // Optional URL to more information about the module 'href' => 'http://processwire.com/talk/topic/3306-sorting-by-page-title-with-some-complexity/', // singular=true: indicates that only one instance of the module is allowed. // This is usually what you want for modules that attach hooks. 'singular' => true, // autoload=true: indicates the module should be started with ProcessWire. // This is necessary for any modules that attach runtime hooks, otherwise those // hooks won't get attached unless some other code calls the module on it's own. // Note that autoload modules are almost always also 'singular' (seen above). 'autoload' => true, ); } /** * Initialize the module * * ProcessWire calls this when the module is loaded. For 'autoload' modules, this will be called * when ProcessWire's API is ready. As a result, this is a good place to attach hooks. * */ public function init() { // add a hook after the $pages->save, to sort certain pages if necessary $this->pages->addHookAfter('save', $this, 'sorttitles'); } /** * Hooks into the pages->save method and sorts pages with a certain template based on certain criteria * */ public function sorttitles($event) { $page = $event->arguments[0]; // Only run if the page we just saved has the "item" template if ($page->template == 'item') { $items = wire('pages')->find('template=item'); foreach ($items as $item) { if ($item->sort_title=="") { $item->setOutputFormatting(false); $new_title = (preg_match( "/^(the|a|an)\s/i", $item->title)) ? substr(strstr($item->title," "), 1) : $item->title; $item->sort_title = $new_title; $item->save(); } } } } } I've not tested it, but it's based on the helloworld module, so if you download it (attached) and put it in your /site/modules folder it should work for you, and hopefully be a good example of how easy it is to write modules too SortPageTitles.module3 points
-
Sorry to hear about the job loss, but you'll appreciate it later on as you move on to bigger and better things. I think it's good that you've invested time in learning ProcessWire. You know how to use a tool that most people don't, and a tool that lets you easily turn any idea into reality. It will be a money printing machine if you want it to be. Unless you have a lot of bills to pay, don't jump back into something where you are dependent upon another employer for your livelihood. You can make a lot more money working for yourself than someone else, though it does take time to get there. Be useful. But find a way to be useful to millions of people rather than just your boss. One idea is to find a fairly specific subject you are passionate about and think about how you might build an online empire around it over time. But that's just scratching the surface. If necessity dictates going back into another job, then at least save your best energy (early in the morning or late at night) building something for your own future, rather than just your employer. The internet really is the land of opportunity where anything is possible. We have more opportunities than anyone has in history. The more you can make investments in and for yourself and the future, the better.3 points
-
I've also read the whole thread. I think this is a move in the wrong direction for modx. Started with modx evo and then used revo - until I discovered ProcessWire. Btw. amazing post here from einsteinsboi ( do I correctly remember seeing him her also in this forum? ) http://forums.modx.com/thread/83497/modx-core-development-team-abandoning-modx-please-read?page=16#dis-post-462193 I can't imagine that something similair is ever going to happen with ProcessWire3 points
-
Just stumbled upon this interesting new direction for MODX and the subsequent discussion. As an ex-MODXer, am not really sure what to think of the move. I am still stunned at the moment. Seems the biggest issue is revenue generation. I get that point....but still...the move is shocking... I have read about half of the discussion in that forum and there are some interesting takes. Naturally a move like this may also raise questions about the future of PW. I recall reading a post by Ryan C (as opposed to MODX Ryan T ) assuring the community about the future & stability of PW. As you will see, PW is mentioned several times in the MODX forums.2 points
-
Hello, we recently relaunched http://bigair.tv to the new Processwire version. The site used to be based on ViMP video CMS which itself is based on the Symphony framework. After almost two years of trying to make ViMP/Symphony work the way we needed it, I decided to rebuild the whole thing in PW. It was well worth it, even though it still contains a lot of bugs and a lot of features are still missing. With Symphony, I spend my time looking for files and classes, rebuilding classes, fighting my way through abstraction layers and trying to decipher Symphony Markup creation tags. With PW, my clients needs are easily implemented and I finally feel like I'm in charge of the site. The site offers user registration through Google and Facebook, video upload for registered users and video transcoding through Zencoder. It was remarkably easy to build in PW (even though I'll take a close look at Apeisa's "Fredi" to see if I can learn something about frontend editing) The main challenge was building an efficient caching mechanism for the video lists, which are customizable for registered users. I used MarkupCache for pretty much everything. So here is my second PW project and by far the biggest one I build so far. Thanks to PW, the community and Ryan for answering my (sometimes silly) questions! http://bigair.tv/ -thomas2 points
-
What any newbie should do first is learn Drupal. After 2 years of: awful theming, i.e. $element['#object']->field_video_embed['und'][0]['value'] instead of $page->field_video_embed searching through 500 line arrays to find out what module is injecting a certain markup in your code writing huge css files to deal with the divs nested within divs nested within divs nested within divs figuring out how to add a meta tag to your <head> using an API and an array getting carpal tunnel syndrome from constantly clearing the cache because Drupal is such a hog, everything has to be cached learning the Views module, a point and click interface that is 3X more annoying and difficult than learning and using straight SQL find a good host that is beefy enough to deal with the Drupal and has advanced caching capability After that, PW will be a walk in the park.2 points
-
I use modal frontend editing in PW since the beginning. It's as easy as providing a edit link that open in a iframe modal and add ?modal=1 to the url.. I wrote and showed even code example in this thread. http://processwire.com/talk/topic/2382-processwire-setup-and-front-end-editing-made-easy/ Just seems nobody really bothered about it, but go all crazy with this module.2 points
-
Hey pwired, Sorry to hear about you losing your job. That sucks. I'll have a longer answer for you tomorrow but in the meantime I'd suggest looking at some videos by James Victore. He's a graphic designer but a lot of what he has to say pertains to gaining the confidence to do what you want to do, asking for help (easy to do on this forum) and do good work. https://www.youtube.com/user/JamesVictore/videos Good luck, cheers Marty2 points
-
Hi pwired, very sorry to hear you just got fired. A positive outlook will be the bedrock of your success and the advice above is excellent and I'm only sorry I can't add much to it. The only practical things I would mention are looking (and of course being) highly professional on a budget, so simple stuff like if you are going to be billing anyone then be you@yourdomain rather than you@hotmail.com and using a professional (entry level cost) invoicing system such as FreshBooks; which incidentally makes charging for time very clean (with, if on a Mac, apps like ChronoMate). This is all a bit specific so likely no use immediately but if it's of any help then I'm happy. In the short-term this is a great training opportunity for you to see what you can learn from the Blog profile, Skyscraper profile and Module building; but of course rightly you will need to also be tackling where to use your skills to make money. So perhaps slice your days: hours a to b = PW learning and hours b to c = the sort of market and work surveying and research mention in the great posts above. You have a lot of good will from lots of PWers and I wish you the best of luck and am only sorry I am not a wealthy PW dev looking to outsource some work right now.2 points
-
Hi pwired, sorry to hear about your job, but you are right when you say another door opens. This exactly happened to me and I have been working for myself for the last ten years, but only about six years on the web. If it helps in any way I will give you a bit of my background (please don't take it the wrong way I am not trying to big-up myself). I started web-based activities in 2007, but I have been working with PC's since the late 1980's (yes, I am an old b*g*er), and created an ecommerce site using an off-the-shelf platform, but I created the layout/design myself. I've not had any formal training in html, css, php, js but I have learnt a lot along the way and certainly using Processwire over the last hear has boosted my knowledge, especially php. I have created my fair share of websites mainly using Dreamweaver and some custom Wordpress themes and now I do all my sites in Processwire for the many reasons stated on this forum. The last six months I have turned to responsive design and I now use the Skeleton framework. In 2009 I started some affiliate marketing in the Life Insurance market, built my own site, which is still running today. I use Adwords to drive traffic and make a fair profit each month on auto pilot. I've got other things on the go as well but I think I have said enough for the moment. OllieMackJames made some good points about starting online marketing. I use the Google keyword tool a lot but I also use other software to evaluate the competition, potential to make money, potential to get on Google's search results first page etc in any given market. You can find some useful video about keyword research, competition etc here: http://www.noblesamurai.com/dojo/marketsamurai/ Well, I hope that helps a bit. If you have any questions you can ask me here or by PM and I will be happy to help where I can.2 points
-
It is a nice post.. einsteinboi is a she btw Yes, she's posted here before. She's also been tweeting about PW (as recently as this week). Investors can be good and bad Of course investors will promote and protect their interests first...2 points
-
$config->minify = new FilenameArray(); $config->minify->add("test.js"); $config->minify->add("test2.js");2 points
-
things went wonky after they got that "big investor" on board and started talking about taking on the big three. but don't worry, according to most of their blog posts, everything's "amazing"2 points
-
I have put together a very basic module for generating images from the pages of uploaded PDFs. It requires imagemagick, ghostscript, and the imagick pecl extension. It could easily be adapted to work without the imagick extension, but I usually like having exec disabled. At the moment it also requires a couple of specific custom fields: document_pdf (file) and document_thumb (image), both with "Maximum files allowed" set to "1". Obviously I will make these more generic, or add the fields on module install once this is closer to being released. There is some commented code that facilitates image resizing before upload to PW if that is what is wanted. I should also make these configurable module options. Currently I am using this for a searchable list of publications to generate a thumbnail of the cover to place with the description, PDF download link etc. I am planning on extending this a fair bit as I want to use it to generate image previews for each page of the PDF so I can use them in a "look inside" modal lightbox. These would all be stored in a standard images field. I think when I start generating images for all the pages I am going to run up against a speed problem. It could potentially take a few minutes to generate all the images for a large PDF. I was thinking of making use of lazycron, but I think I'd rather see some progress indicator. The other issue is if I use lazycron, then it is possible that someone may visit the site and go to use the look inside functionality before the images for all the pages are ready, so maybe this idea is out. Perhaps the best approach would be to hook into the PDF upload. Once the upload is complete, the module would start generating the images before the page is ever saved by the user. Would really appreciate any suggestions on how to set this up. Off the topic a little, but one other minor consideration in all this is RGB vs CMYK colorspace. If the user uploads an RGB PDF then everything is fine, but if someone uploads CMYK PDFs the colors are often terrible, but there is a tweak that can be made to imagemagick to fix it. Here is a good description of the problem and how to fix it: http://www.lassosoft.com/CMYK-Colour-Matching-with-ImageMagick Basically you need to add the command line option ''-dUseCIEColor'' to all of the GhostScript commands in the delegates.xml file, so that they now look like this: <delegate decode="eps" encode="ps" mode="bi" command='"gs" -q -dBATCH -dSAFER -dUseCIEColor -dMaxBitmap=500000000 -dNOPAUSE -dAlignToPixels=0 -sDEVICE="pswrite" -sOutputFile="%o" -f"%i"' /> Would anyone else make use of this module? Also, does anyone have any obvious suggestions for what I have so far. It's my first module, and I don't really have a handle on best practices yet. Thanks! PS I know convention is to attach module files, but this one is so short at the moment, it didn't seem worthwhile. <?php /** * ProcessWire ProcessPDFImageCreator * * Process PDF Image Creator creates images from PDFs. * * @copyright Copyright (c) 2013, Adrian Jones * */ class ProcessPDFImageCreator extends WireData implements Module { /** * Return information about this module (required) * * @return array * */ static public function getModuleInfo() { return array( 'title' => 'PDF Image Creator', 'summary' => 'Creates images from PDFs.', 'version' => 001, 'author' => 'Adrian Jones', 'singular' => true, 'autoload' => true ); } /** * Initialize the module and setup hook */ public function init() { $this->pages->addHookAfter('save', $this, 'createPdfImage'); } /** * If document_pdf field contains a PDF, generate an image from the first page. * * */ public function createPdfImage($event) { $page = $event->arguments[0]; if(count($page->document_pdf)>0){ $src = $page->document_pdf->first()->url; if(count($page->document_thumb)==0){ $pdf_filepath = $page->document_pdf->first()->filename . '[0]'; //the appended [0] refers to the first page of the PDF $jpg_filepath = str_replace('.pdf', '.jpg', $page->document_pdf->first()->filename); $resolution = 288; $im = new imagick(); $im->setOption("pdf:use-cropbox","true"); $im->setColorspace(Imagick::COLORSPACE_RGB); $im->setResolution($resolution,$resolution); $im->readImage($pdf_filepath); $geometry=$im->getImageGeometry(); $width = ceil($geometry['width'] / ($resolution/72)); $height = ceil($geometry['height'] / ($resolution/72)); $im->setImageFormat("jpg"); /*if($width>150){ $width = 150; $height = 0; } $im->scaleImage($width, $height);*/ $im->writeImage($jpg_filepath); $page->of(false); $page->document_thumb->add($jpg_filepath); $page->document_thumb->first()->description = $page->title . ' PDF thumbnail'; $page->save(); } } } }1 point
-
I've been working on a blog profile that we can have as an installation option for ProcessWire. The goal is to have a profile that someone could download and setup a pretty nice website/blog without having to touch any code (i.e. it's ready-to-run and populate). I'm hoping that this is something that may help us to grow our audience beyond the web development community. The requirement is that it must be as easy (or easier) than WordPress, both to install and use. This profile is also for web developers, as it's a blog profile ready to be styled and enhanced -- a good starting point. It uses the Zurb Foundation CSS framework, so it is fully responsive and mobile-ready. It's not much to look at now, but should be fully functional. I'm making progress and wanted to post a preview. The content you see here is from one of my client's blogs and the content is just here to test things out. http://processwire.com/blogtest/ I'm hoping to get this up on GitHub next week. I've never really done much blogging, so am seeking feedback on what others would suggest to make the blog profile as good, powerful and simple as it can be. Right now it's pretty much a generic Zurb Foundation "look and feel", so it probably needs at least some color tweaks and integration of some masthead photo(s) or something.1 point
-
Hi, I wish to have a core ImageManipulationClass like the ImageSizer but not only for resizing and cropping images. It should provide these easy to use functionality like with the ImageSizer and additionally a step to step image manipulation whereas the user / module author is not restricted anyhow. The basic image manipulation methods should be included, like: im_flip im_rotate im_crop im_crop_auto im_resize im_sharpen im_stepResize If someone want to do something more fancy or magic, he/she should not to have to reenvent the basics again. He/She just should start with the class by opening the imagefile and create a GD-object, use some basic methods, and at any point get the GD-IM-Reference out, do his fancy magic with it and put it back to the class to use its basics to finalise the file: im_get_im() im_set_im( &$im ) I have started to write something for this. I tried to be as close to the ImageSizer as possible, but some differences will be there. Before I've started with it I have done some tests with sharpening, rotating and others. First I've tried to create a module that hooks into ImageSizer, but have figured out that this wouldn't solve most things what I imagine one want to do with images. I have read the code of ImageSizer very carefully and there are allready very good inprovements in it from the community here. Ok, Ryan has written it and done the most work of all, so tribute to him , - adamkiss, interrobang, mrx, teppo, u-nikos have contributed the improvements to it: . I have looked into apeisas Thumbnail-Module and tried adding functionality for sharpening to it. It think he would have liked if there was a CoreImageManipulation class once when he has written the module. Also Soma actually work on a very cool Module where I really would like to see a link/button or some links/buttons for every image that just let you do some manipulations/corrections to them. <hint, hint ;-)> Any thoughts or Meinungen are welcome. --- EDIT: there is actually a modified ImageSizer class with autoRotation & sharpening available for testing: http://processwire.com/talk/topic/3278-core-imagemanipulation/#entry32284 --- Here are an overview of what allready is in, (I post only properties and method names, not the method bodies): class ImageManipulation extends Wire { // information of source imagefile /** * Filename ImageSourcefile */ protected $filename; /** * Extension ImageSourcefile */ protected $extension; /** * Type of image ( 1 = gif | 2 = jpg | 3 = png ) */ protected $imagetype; /** * Information about the image (width/height) and more */ protected $image = array(); /** * Was the given image modified? */ protected $modified = false; // default options for manipulations /** * Image quality setting, 1..100 */ protected $quality = 90; /** * Allow images to be upscaled / enlarged? */ protected $upscaling = true; /** * Allow images to be cropped to achieve necessary dimension? If so, what direction? * * Possible values: northwest, north, northeast, west, center, east, southwest, south, southeast * or TRUE to crop to center, or FALSE to disable cropping. * Default is: TRUE */ protected $cropping = true; /** * Should a optional Auto-Rotation be performed if EXIF-Orientation-Flag is available? */ protected $auto_orientation = true; /** * the default sharpening mode * * @var array with custom pattern or a string: 'soft' | 'medium' | 'strong' | 'multistep' */ protected $sharpening = 'medium'; /** * if extended imageinfo should be retrieved: number of Channels, Bits/per Channel, Colorspace */ protected $extended_imageinfo = false; /** * Extension / Format for resulting Imagefile (default is same as ImageSourcefile-Extension) */ protected $outputformat; /** * Filename ImageTargetfile if $outputformat is different than InputImage (default is same as ImageSourcefile) */ protected $targetfilename; // other properties /** * Directions that cropping may gravitate towards * * Beyond those included below, TRUE represents center and FALSE represents no cropping. */ static protected $croppingValues = array(); /** * Supported image types (@teppo) */ protected $supportedImageTypes = array(); protected $option_names = array(); private $property_names; // Methods to set and get Properties /** * Here you can specify multiple options as Array, whereas with the * single set* functions you can specify single options * * @param array $options May contain key-value pairs for any valid Options-Propertyname * @return this */ public function setOptions(array $options) public function setQuality($value) public function setUpscaling($value) public function setCropping($value) public function setAuto_orientation($value) public function setSharpening($value) public function setTargetFilename($value) public function setOutputformat($value) /** * Return an array of the current options */ public function getOptions() /** * makes protected and private class-properties accessible in ReadOnly mode * * example: $x = $class->propertyname; */ public function __get( $property_name ) // Construct & Destruct the ImageManipulator for a single image public function __construct( $filename, $options=array() ) public function __destruct() public function im_release() // read image informations, basic and extended protected function loadImageInfo() private function extendedInfo_gif(&$a) private function extendedInfo_jpg(&$a) private function extendedInfo_png(&$a) // helper functions /** * check file exists and read / write access * * @param string $filename * @param boolean $readonly * @return boolean */ private function check_diskfile( $filename, $readonly=false ) /** * helper, reads a 4-byte integer from file */ private function freadint(&$f) // the IM's (ImageManipulation Methods) private $im_dib_dst = null; // is the output for every intermediate im-method and optional a check-out for the im! private $im_dib_tmp = array(); // holds all intermediate im references private function get_next_im( $w=true, $h=null ) public static function is_resource_gd( &$var ) public function im_get_im() public function im_set_im( &$im ) public function im_flip( $vertical=false ) public function im_rotate( $degree, $background_color=0 ) public function im_crop( $pos_x, $pos_y, $width, $height ) public function im_crop_auto( $direction, $width, $height ) public function im_resize( $dst_width=0, $dst_height=0, $auto_sharpen=true, $sharpen_mode='medium' ) public function im_sharpen( $mode='medium' ) public function im_stepResize( $dst_width=0, $dst_height=0 ) // static oneLiner Methods that can be called only with a filename passed to them public static function file_get_exif_orientation( $filename, $return_correctionArray=false ) public static function file_jpeg_auto_rotation( $filename, $quality=95 ) }1 point
-
A past client of mine which I did a wordpress site for a couple years back is now having issues with their site layout. It's been forever since I dived into wordpress and after playing with PW for a little over a couple months, I really don't even want to attempt trying to fix the wordpress issue. In fact, I thought I eliminated every possible way an issue could come up for them :/ Anyway, I think to myself, "I can convert this entire wordpress site over to PW in a day or two and actually save myself a headache from the wordpress template forest!! Food for thought, even though I tried to make it as user friendly as possible and wrote a user guide, it seems they have never uploaded any photos, videos, or anything of the sort. It's a shame really, and I think it had a lot to do with how Wordpress is still unfriendly to some really non-technical clients. So, I am looking forward to blowing their minds when I show them the beauty of Processwire My rant...1 point
-
Too... many... toilet references... ryan But yes, I instantly thought of plumbing too and agree with someone's comment on the MODx forums about the logo being reminiscent of the HTML5 and Magento logos. I think the only logical reason for another name is the fact that the new service will host other products such as WP, but it would have been nice to somehow keep it similar whilst descriptive somehow (xhost.com is for sale by some cyber-squatting domain holding company for example). That aside, the need to raise money through one service or another to keep a team working is just something that happens when many open source projects get to a certain stage from what I can tell. At some point during the lifecycle of a few of the projects I've kept an eye on, someone ends up working on support full-time or on coding full-time, and there needs to be a source of income at that stage. Usually the full-time coding side of things comes when the project attempts to add something massive as part of the core or rewrite all of the code every few years, but we're blessed with ryan developing optional modules to add functionality and having created a wonderfully abstracted API which allows for code changes behind the scenes and a set of API commands that will change very little if ever in most over the years and not break backwards compatibility *finally takes a breath*. Commercial support is a subject that has cropped up elsewhere on the forums in the past so that is about the most corporate thing that I can think of that might be on the horizon for ProcessWire as several devs have enquired about it, but that's a topic for the future, is something that doesn't affect 99% of users and doesn't affect the usual support on the forums anyway as it's all about paying for SLA's by web dev companies and... businessy stuff... (sorry, it's late and my brain is clouding over with a headache ). I've not been keeping up with MODx in recent years, but whilst they have always had a small, core team of devs doing most of the work I think a lot of ryan's impression of them being a big company may come from an active community (we're getting there as well, definitely!) and a smart looking website (nothing wrong with ours, just picking a description for theirs). Their website when I first discovered MODx definitely said "open source" to me: http://web.archive.org/web/20080103101906/http://www.modxcms.com/ whereas the current one is simply more businesslike and makes them look bigger despite it being more or less the same core team as 4 years ago. I wasn't really going anywhere with that last paragraph other than to say that it's difficult to gauge the size of the team or the capital behind a project from looks alone as the two are worlds apart - and there was a friendlier design in between that one and the current one too that reminds me a bit more of the current ProcessWire site and I think they should have kept for longer: http://web.archive.org/web/20110208164501/http://modxcms.com/ Whatever changes are made to any project, if they're big enough then some people won't like it. A lot of people just don't like change, but much of it can be alleviated by releasing a comprehensive FAQ when such changes are made as it prevents much of the speculation that so quickly spirals out of control. Anyway... my train of thought has pulled into the station and I think that's my lot for the night1 point
-
The beauty of ProcessWire is that it approaches content management without any assumption about what kind of content you're storing, or what you're going to do with it. Content is data, and data is content, and are accessible equally through the API and the GUI. You don't need to build modules to take full advantage of PW, or even make templates -- you can just include PW in any PHP script and have full access to its API. So yes, it would be extremely easy to build a custom web application on PW. You can just think of it as a way to interface easily and safely with MySQL. It also happens to have a wonderful GUI backend, objects for santizing user input, and managing sessions.1 point
-
I ended up going with soma's suggestion, and just storing the alternate title as field sort_title in the Page. Here's the function I made, triggered by the hourly LazyCron: function createSortTitles(HookEvent $e) { $items = wire('pages')->find('template=item'); foreach ($items as $item) { if ($item->sort_title=="") { $item->setOutputFormatting(false); $new_title = (preg_match( "/^(the|a|an)\s/i", $item->title)) ? substr(strstr($item->title," "), 1) : $item->title; $item->sort_title = $new_title; $item->save(); } } } For some reason I couldn't get the selector sort_title='' to work correctly -- it would only return a portion of the Pages. Hence the conditional instead. -evan1 point
-
Also, don't be afraid to try new things. Sometimes one thing leads to another. As an example; the reason I found Processwire is that I wanted to give my clients an easy way to manage their website content, but it came with added bonuses. Some of the functionality I have added to sites would not have been possible (easily) for me without PW. I completed a basic site for someone last year, since then I have added a products/shopping area and now am working on producing a PDF brochure for their products, all extra income you see. I have a number of my own websites, some of which being the affiliate one I mentioned earlier, a web hosting one integrated with WHMCS and customised/branded Cpanel with additional added sections for upselling other products. So I can offer a complete service (domain name registration, hosting, website, emails etc). When my workload is a bit on the light side, I offer a free website (limited number of pages) in exchange for a minimum 12 month hosting contract. But I also do these freebies in PW so the client has the ability to add more pages themselves. I made a community website for free. I'm still paying for the hosting etc, but the plan is to attract local businesses to sponsor the site to cover costs and any additional revenue goes back into the community council funds. Just some more ideas to think about I hope it helps?1 point
-
I don't want to hold you back! I will explain myself further. Since you want to be a professional in the internetbusiness, let other people be professionals in their business. I've made some stupid mistakes not hiring professionals. A good accountant will pay itself back - trust me on that. My accountant does my administration and keeps my books in order. He knows that to do with the law and taxes. My expenses hiring a accountant went up, but on the other hand he also showed me what I was doing wrong with my taxes. Let's say the accountant costs me $400 (really simple administration) a year, but my wrong tax administration costs me $800 a year. The bottomline is that I've just earned $400 a year. And the best part of it is that I do not have to worry anymore. I've cleaned up more time to do what I love - and that's not finances I've never needed a laywer (lucky me), but I did recieve some advice using contracts. You can read some legal stuff on docracy.1 point
-
@pwired, +1 for @arjen's post if you are doing business as a small corporation. In my (limited) experience you will have an initial upfront cost to both 1) and 2) when you initially setup, then you will likely need to use the lawyer very rarely indeed and the accountant often only once a year. Of course such advice depends a lot on the detail of your position, plans, skill set, desires etc. One thing I am sure of is that I am glad I did the 1) and 2) from @arjen's list for my particular circumstances. Continued good luck1 point
-
If you want to be a web designer / developer: Create a personal website. Place your résumé and career goals on the site. Add a portfolio of different projects with screenshots, code samples, and links to real sites you've worked on. Make sure the links work! List your skills and what web CMS's you work in. Add a contact page. If you aren't a designer, don't post work on your own crappy design. Use a professional theme and focus on your development and integration skills. Otherwise you look like a hobbyist. Run everything you write through a spell and grammar checker. Go to places like elance and Odesk. Work for cheap until you have some good experience. Do a website for your brother-in-law's business or a local school or charity. Put some meat on your résumé/site. Why all this? I own a web design company and I get job requests every day. If their emails don't have a link to an online portfolio, I hit delete.1 point
-
http://www.reddit.com/r/IAmA/comments/se78n/i_make_over_100k_per_month_running_dropship/1 point
-
Hi Ko7n it's heredoc syntax, one way of writing PHP to save having to go in and out http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc1 point
-
@Soma, I thought so too but can't seem to find it! (There were many, many questions I asked ) @pwired, sorry to hear about your job but you're right to be positive, if you enjoy doing this then chances are with enough time spent on it you'll be good enough to make some money out of it. Firstly you probably want to ask yourself "What part of the web do I like the most?" Does the design part inspire you, the coding part? Both? Are you interested in all various parts of the web or do you have one particular area. Also what character do you have? Are you driven? Or do you prefer to be told what to do (Freelancer vs Employee). Also what skills do you currently have?1 point
-
There was a thread by onjegolders (?) or some other guy about this subject... just can't find it. Maybe this thread also belongs to development/pub thread?1 point
-
Hi all, I'm tickled with my new local dev setup, and I thought I'd share in case anyone else wants to try it out or offer suggestions for improvements. Prerequisites: I'm using a Mac running OS X Mountain Lion. 1. Install Homebrew 2. MAMP + dnsmasq (http://eddmann.com/posts/the-ultimate-mamp-setup-hands-down/ and http://www.echoditto.com/blog/never-touch-your-local-etchosts-file-os-x-again)* * There is currently a typo in the first link's instructions. You need to use address=/.dev/127.0.0.1 in /usr/local/etc/dnsmasq.conf (note the dot in .dev for TLD). I add Homebrew's PHP to /etc/apache2/httpd.conf like so: LoadModule php5_module /usr/local/opt/php54/libexec/apache2/libphp5.so Then issue a sudo apachectl restart. The first time I hit a new site locally, I need to type the full http://mysite.dev to stop Safari, e.g., from searching Google rather than navigating to the URL. After that it remembers and all is well. 3. Install git vie homebrew and configure; create repos on BitBucket for remote storage. Use git submodules (planned) for ProcessWire and other components, like Bootstrap. I make a "live" branch that I can pull to the server when I'm ready, and other branches as needed. I'm shuffling local tools at the moment, but using TextMate 2 as a primary editor and thinking of CodeKit for browser refresh and LESS/Sass compilation. Wish CSSEdit hadn't been killed as a stand alone product instead of being wrapped into Espresso. On the browsers I'm using a mix of FireFox with Firebug and FireSass, Google Chrome with dev tools, and Safari. I think that's it, so far! EDIT: I did need to uncomment the RewriteBase / option in .htaccess1 point
-
Maybe you can get InputfieldPageName module to the site/modules/ folder and change the JS name behaviour. ( making the name fields javascript remove the / an / a / ) $title = "The tralalala"; $title = trim(preg_replace("/^(the¦a¦an)\b\ */i", "", $title)); $iLookLikeName = $sanitizer->pageName($title); $pages->find("name=$iLookLikeName, sort=name");1 point
-
@n0sleeves No you're not doing anything wrong. As I said I didn't test this, just thought it would work. I found it's not working the way I thought with a page field "pagefieldname.url". MarkupSimpleNavigation uses the $page->get("fieldname|otherfieldname") method to get values, and subfields don't seem to work here. So I just went and added this feature so you can now in 1.1.8 use page fields like 'redirect_page' (without url) and it will detect it's a page and spit its url. To make it work the page field has to be set to "Single Page or false". 'item_tpl' => '<a href="{redirect_page|url}">{title}</a>' This is now in pushed and available on modules repository.1 point
-
Good example of microdata use on the videos and on OG tags on all pages. You place microdata on http://bigair.tv/video/vagabond-ritual and other videos. Are you planning on adding microdata to your other pages such as Product and News Articles?1 point
-
Thanks for all the input! I incorporated a bit of different input to make something short and it works nicely. I shortened it to: <?php $randomTesties = $pages->find('template=testie, sort=random, limit=10, id!='.$page->id); if(count($randomTesties)){ foreach ($randomTesties as $randomTestie) { $class = ($count & 1) ? 'testiecolalt' : 'testiecol'; ?> <div class="<?php echo $class; ?>"> <div class="testie"><h4><?php echo $randomTestie->testie_header; ?></h4> <div class="testiequote"><?php echo $randomTestie->body; ?></div> <h5><?php echo $randomTestie->testie_name; ?></h5></div> </div> <?php } } ?>1 point
-
@onjegolders: it does feel very snappy (checking from Paris, France), and that's impressive for a rather image-heavy site as portfolios usually are.1 point
-
Greetings, Excellent work Thomas! Fun and welcoming site, which fits the subject matter. It loads lightning fast for me (desktop). The "Videos" section is nice and clear, and the "Shop" section is easy to navigate. My one small criticism... The horizontal split between the "article-text" DIV and the "aktuelles-pic" image on each "News" item makes it just a bit confusing to navigate specific entries. Thanks for sharing! Matthew1 point
-
Actually there is a modified ImageSizer Class available for testing. It autoCorrects Rotation. See this Post: http://processwire.com/talk/topic/3278-core-imagemanipulation/#entry32284 If you have enabled the EXIF-Extension in PHP and it doesn't read EXIF-fields correct, you may have a setup that needs a little tweaking in the php.ini. Search for https://www.google.de/search?q=PHP+EXIF+mbstring In some (rare) cases (on Windows?) the mbstring extension must be loaded before the exif extension.1 point
-
pwpwpw.pw PowerWithPrizeWinnerProcessWire !! edit: or pwpwpwpw.pw PowerWithPrettyWonderfulPrizeWinnerProcessWire !! edit2: or pwpwpwpwpwpw.pw PromptlyWinPhenomenalWorkingPowerWithPrettyWonderfulPrizeWinnerProcessWire !! ok, i'll stop...1 point
-
Hi, i looked to module code and seems like dont support own email format now. Mail localization will be supported. About SecurityFiled: Form render in template must have 'requireSecurityField' => 'security_field' $outSendForm = $page->comments->renderForm(array('requireSecurityField' => 'security_field')); And needed javascript is here: <script type="text/javascript" charset="utf-8"> $(document).ready(function(){ var $input = "<input type='hidden' name='security_field' value='1' />"; $("#CommentForm form").append($input); $("#CommentForm").show(); }); </script> Comments documentation.1 point
-
I just moved a site from my local MAMP to the production server and could not login. I tried everything suggest here in the forum, but the "forged" message remained. Because I did not want to upload all sessions I excluded the "/site/assets/sessions/" folder when uploading the site by ftp. As soon as I created the "/site/assets/sessions/" folder by hand on the server everything worked again. Conclusion: Remember that you need these folders: /site/assets/cache/ /site/assets/logs/ /site/assets/sessions/1 point
-
@Nik, you are right of course. Already changed it. @Matthew, seems interesting but I really like to keep it simple and adapted to each situations need. What you are asking can be closely achieved by creating a "dev" folder inside the templates folder and copying there your styles and scripts folders. Then, put this line on the top your header.php: if ($user->name == 'me') $config->urls->templates .= "dev/";1 point
-
I think you need to provide more detail. For the sites I have build I have always used the one /tools/ page which has many subcategories, like: /tools/recipes/recipe-categories/ /tools/recipes/recipe-types/ /tools/tags/common-tags/ /tools/tags/events-tags/ /tools/cities/ etc... Some of those are editable by client, others just for superusers.1 point
-
I wrote my first PW module this week-end, and I was generally pleased - in about 5-6 hours through the day, I was able to learn (from the ground up) how to use the hooks and input-fields APIs, as well as writing a small but functional plug-in. If I had to compare this experience with my Drupal or WordPress module-writing experience in the past, I would say this is about 10 times easier to learn and do! One thing I find in general about PW however, is the IDE support is lacking - this is natural and expected, due to the nature of the PHP language, but I like to push the limits, so if you're interested... Help me brainstorm for ideas to implement IDE support for hooks? Of course, the obvious route is to implement IDE support in the IDE - this is the route that more IDEs seem to choose lately, for example Yii and Symfony has IDE support in a couple of IDEs by now. That's all well and good, but I would strongly prefer to find an approach enables static analysis - IDEs already parse and inspect code and PHP-DOC annotations, and in modern IDEs this ties in with powerful features like auto-completion, parameter/type-hints, documentation, diagramming, automated refactoring, and so forth. There must be some way we can leverage that existing IDE power? A couple of random ideas and hocus-pocus off the top of my head: - thin run-time code-generation in "autoloaders" - things like eval('class '.$magic.' extends '.$static.' { use '.$trait.' }') execute quickly. - static code-generation via stream-wrappers or autoloaders, modifying or generating code. - inline code-generation (via autoloaders) - altering sectioned areas in source-code (relies on eager saving and auto-refresh in IDEs/editors, e.g. PhpStorm) - class-name aliasing: use x as y... I actually attempted eval('use Foo\Bar as Fudge;') and I can report that it executes, but doesn't work - still worth pondering though, could work in combination with inline code generation. - PHP 5.4 traits can implement __call(), __get() and __set() ... doesn't provide any IDE support off-hand, but perhaps in combination with something else? - parsing PHP and/or PHP-DOC: could lead to interesting results in combination with another hocus-pocus technique. Please add to the list, if you're interested!1 point
-
Here's the next version of the Blog Profile. This one incorporates the simpler structure I mentioned earlier, exactly as outlined. Please let me know how it works for you. To install, download a fresh copy of ProcessWire and replace the /site-default/ directory it comes with, with the one in the attached zip: blog-site2.zip Thanks, Ryan1 point
-
Hi Jason, if you're doing it just for a few pages, you don't need any module/plugin; you can do this simply by using templates! Create field 'redirectTo' – customizable, of course Set that field to be 'single page', and select the inputfield you wish Create template 'redirectPage' – again, custom put following code in your template file Create page that links to original page you've made your virtual page Code for your template: <?php /* * Template: redirectPage * * Used to redirect URL adress to other page with 301 HTTP code */ $session->redirect( $page->redirectTo->url ); I actually use this at least once each site.1 point