Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 12/03/2012 in all areas

  1. Not to completely hijack this thread, but... you may wish to read this: http://www.cmscritic.com/critics-choice-for-best-free-cms-goes-to/ I've sent Ryan the badge below for ProcessWire.com if you feel like showing it off
    10 points
  2. Words of encouragement from the Pub's amateur psychiatrist (Read best in a soft spoken, German accent) Ah, you are here because you have been reading things in this forum about pages that have left you confused, disorientated, befuddled. You thought you knew what a page was - you have been thumbing through them, folding them, studying them, wrapping things up in them and scrolling up and down them for most of your life! A page is this solid item - this great lump of data stuffed with things. But now you have come to Processwire, and everything you thought was true, simply isn't any more. For in Processwire pages are completely different - they are not great gulps of information, but tiny little things, nothing more than a link to the more interesting world of fields and templates; just a little blip of data in your huge fascinating database. Pages in Processwire are used for all kinds of things. They can be used as a marker in your pages list. They can be used as a group parent for other pages. They can be used as categories, tags or lists or users. And they can even be used for simple drop-down selects - just to supply a label and value. It can seem crazy to use such an iconic thing like a page for such a mundane and trivial task! But don't worry and fret, don't lose sleep or pace the floor as you think the reputation of the noble page is being crushed! In Processwire, they are fulfilling their duty to the full - and the more slight the task, the more they bound up to the wall and jump up and down shouting "use me, use me!" And, as a bonus, they can even be used for content - for all that stuff you thought was a page, but in Processwire isn't! So, don't be put off by the Processwire page - use it for everything! it is much smaller than you think, takes up hardly any space at all, is well behaved and only will do its thing when it is called. In fact it is hardly a page at all .... and then again, it is also so much more!! Better now? Joss Freud
    4 points
  3. (can someone check this for accuracy and let me know any changes I should make - I am very new to PW) I wanted to create a simple select drop-down, but there isn't one in Processwire by default. Reading the forums, it became clear this was for very good reasons and that you are expected to use pages. But I couldn't find clear instructions how to do this. So, having worked out how, I wrote myself this little tutorial: ##################### Processwire by default does not have a simple select field. The reason, given by Ryan the developer, is that a plain simple select field is not related to the database, so you have, in effect, some of your data in a flat file - sort of - which is not good practice. The preferred way of doing select fields is by using pages for the values and the Pages field to list them in your form. If you just want a simple on/off state, use a checkbox, but if you need more options, then this is the way. Creating Pages for Select Fields These pages must be published to be accessible by the pages field but are obviously not wanted on the website. First, create a dummy template (a tempalte with no associated file) called something like "selects." Give it two fields - the normal title field and a text field called select_value Create a Top Level (child of Home) page called Selects (or something friendly). Give it a blank dummy template. Make this page hidden. Create a child page and call it something that will work for this group of selects - perhaps call it "Yes No." Again, give it a blank dummy template Create three children under this - one called Yes, another called Maybe and a third called No. Use the dummy template "selects" that you created earlier. In the select_value field put a value - in this case the most obvious would be yes, maybe and no! For ease of use, make sure these values have no spaces or anything clever. These three pages will be your select values. How to add to a template Create a field using the Pages field type. Call it something like "yes_no_maybe_selector" Under the details tab, select the single/null option. Under the Input tab, select the Yes No page as the parent. This will then display your three children in the select. Choose either Radio or Select. Add this new field to your template in the usual way. How to output into your template.php The field is called in the usual way, remembering to call the particular value from the select page. So: $page->yes_no_maybe_selector->select_value; The chances are that you are going to use this as a condition - if "yes" do something, if maybe do something else and if "no" do something else again. IMPORTANT: You cannot set a default state - so you will always have another option - Null. So, if you are only wanting to do a two way selection, then you are probably better off just doing a simple checkbox. In this example, therefore, we will effecting have Yes, Maybe, No and Null - that is no, twice! Never mind.... First, lets add it to a variable: $yesno = $page->yes_no_maybe_selector->select_value; Now, we can set up our variations. if ($yesno === "yes") { echo "Say Yes"; } elseif ($yesno === "maybe") { echo "Shrug your shoulders"; } elseif ($yesno === "no") { echo "not a chance"; } else { echo "nada"; } Note that the last option is effectively the null option, so something is being outputted, even if it just some blank space which saves potential errors or silly bits of markup (well, in my case that seems to happen!) And that is it! Joss
    4 points
  4. At the risk of being overly critical (keep in mind it's out of absolute love) — something about the white line under the nav area feels weird to me. Quick suggestion might be something like this: P.S. In that screenshot above, I also removed the shadows from the around icons. The icons are great, but the shadowing kind of makes that area look a little grubby. That said, this design is some very nice work "yet-to-be-named designer"
    3 points
  5. Hey Ryan, Totally understand (and agree with) your points. My 2 cents would be to show the default admin first, and then rotate into a theme. Despite my few tweaks, I really like the default theme. Might also be nice to have a way to give some details about what each screenshot is showing. I'm not suggesting to make it look like this, it's just the first example that came to mind: http://www.realmacso...re.com/courier/ Anyhow, I'll shut up on that subject for now — I should know by now that whatever you have planned will be amazing. Re: My admin tweaks. Would be honored to have those included on the default theme. I have only made a few small CSS changes that effect things when wrapped in a Fieldset. Probably pretty easy to extend to the entire admin. I'll see if I can put that together as a theme to test it out. Update: It also doesn't hurt to read the entire thread before commenting.
    3 points
  6. The goal here is to show ProcessWire in several different contexts to portray a lot of diversity, but that probably doesn't come across yet since we just have one set of screenshots in play at the moment. The way I see it, ProcessWire is a system, not an admin theme. If we're going to show them the system, I want to present it in the way that looks best on the page. I thought Nikola's screenshot was more attractive than mine in this context, but it's still showing the same system (and the Futura theme is beautiful). But what I'd really like is to have several sets of screenshots to rotate in here. So far I've not been able to get anyone else to send me any. Would love to get some screenshots of your admin theme tweaks you posted the other day in there--actually would like to implement those in the default admin theme.
    3 points
  7. Just merged pull request from Ryan, which includes few nice improvements to this module: 1. Support for securefiles (coming in 2.3) 2. Works on regular image files 3. Some minor code tweaks (sanitizing & indentation) Ryan: about "works on regular image field also": how does it work? Thumbnail settings are set per field basis, and the setting field is visible only when fieldtype is cropImages - so where does it get thumbnail sizes for regular images? I tested the commit before merging and it didn't break anything on my test installation - so it should be safe to just pull in the latest changes. Thanks for the update Ryan!
    3 points
  8. Do you hate dislike TinyMCE and heart Markdown? Or Textile? Or HTML? Do you wish there was better way to create content than textarea? Well there is! Content creation oriented, syntax highlighted and easy on the eyes, that is this new plugin I made. And I know you'll love it! And did I mention it supports HTML, Markdown and Textile? Download/fork/star here: GitHub PW Modules Your local modules manager Features Syntax highlight your text, for easier preparation of content Nice light, readable theme Supports Textile, Markdown & HTML Auto selects mode, based on field's textformatters (last found is used) Works with multiple fields on page, each with different settings Features inspired by iA writer Blue Cursor Focus mode We are still kind-of in beta, so please, test your browsers and let me know… Thank you! <3 PW
    2 points
  9. I was in doubt if I should post this one because it's not completely ready. The site is for a thesis project of a friend. In short, he collects raw videos filmed by the random citizen in the Historical Center of Oporto to further analyze and contextualize them. The videos are being submitted on the site, uploaded to youtube and shown on a big random wall. The project will be rethought, and might change a lot in the future. I guess that's why I decided to post it now... PW has a big part on this since every video that is uploaded to youtube is kept as a PW page and connected to a filmmaker (also pages). This allows me to collect all the videos quickly without the limitations that are imposed by requesting with the youtube API, and allows me to keep much more information for each video than YouTube Would. It was also very easy to create a script to import some videos that were already on youtube to the system. PW rocks http://museudoresgate.org/
    2 points
  10. Finally I took the big step of creating a bookmarks folder only for bookmarking threads or individual post from the forum. If someone wants to follow maybe we can have a nice repository of code in some months by joining everything. Just an idea
    2 points
  11. Thanks for writing this. There's many ways and different use cases, and that's hard to write everything down to not get to lengthy. Some thoughts. This technique with pages and a page field or without can be used for various things. You can build such helper pages to build a select on the frontend only and render the options in a foreach. Doing it this way you benefit from being able to add and move options in the admin page tree, and allow the editor to even edit or add to them. And all stays in the same manner as all other pages. I can tell my clients "well there's the pages that make these options and they know how already". Being everything accessible through API so easy, would make it easy to even build some little tool in the backend to manage those options outside the page tree, to go even further. Also those page references are great for doing categories, tagging, ingredients, .. whatever. And later those pages can be even used in your site and make them accessible and give them a template. There you then show all pages that have a reference to the currently viewed category. I've for example created a whole shop where the navigation are the categories and articles are just linked to some category and display when browsing the category tree. And best of all it stays flexible and can be adapted or expanded in no time with no limits. One could write down a whole book solely on this subject as it's endless, but guess nobody would buy it. Creativity is what I enjoy in PW. One thing about selects having a empty option. This is simply to be able to "deselect" it in the admin. So if you use page field select for doing something on the frontend you would use usually check for if not empty to determine if anything at all. So your example could aswell be like this: if ($yesno) { // anything selected? if($yesno == "yes") { echo "Say Yes"; } elseif ($yesno == "maybe") { echo "Shrug your shoulders"; } elseif ($yesno == "no") { echo "not a chance"; } } No need to write === here, == is sufficient I think when comparing strings. You do triple === usually on comparing objects.
    2 points
  12. 4. One other thing I added: If you delete an image, it won't leave the crops behind (they get deleted too). Previously the crop files would stick around even after the original image was gone. The field config is defined in InputfieldCropImage.module rather than FieldtypeCropImage.module, so that's why it works. It's more your doing than mine, as I only had to tweak a couple things to make it work. It was an accidental find too. Meaning, I wasn't intending to add this specifically, but noticed it worked through my own error of forgetting to change the fieldtype. It's possible I'm missing something, but it all seemed to work fine here. Of course, the FieldtypeCropImage is still a necessary component. But it's acting like an autoload module, adding hooks to Pageimage and Pageimages.
    2 points
  13. I think that the error is here: $p = $pages->get("/buchhaltung/buchungen/")->children("title=$c"); $p->delete(); $p is a PageArray (the return value of the children() method), not a Page, and there is no delete() method on a PageArray. What I think you want is the child() method (which returns 1 page) rather than the children() method: $c = $sanitizer->selectorValue($input->post->delpage); $p = $pages->get("/buchhaltung/buchungen/")->child("title=$c"); if($p->id) $p->delete(); Also, you might want to use the 'name' or 'id' property rather than the title. The reason for that is that 'title' is not guaranteed to be unique, whereas 'id' is guaranteed to be unique system-wide, and 'name' is guaranteed to be unique for all children of a given parent. $name = $sanitizer->pageName($input->post->delpage); if(strlen($name)) { $p = $pages->get("/buchhaltung/buchungen/")->child("name=$name"); if($p->id) $p->delete(); }
    2 points
  14. Here's a great example of mobile first http://aneventapart.com/ I love how it looks in my android phone!
    2 points
  15. I'm really happy with the new site too. I wish I could take credit for some part of it, but didn't have anything to do with the design or development (other than some last minute tweaks before launch). It was designed and developed by the forum community here. The designer asked not to be named yet until the site is fully done (we consider the current one a 'soft launch', and some changes are yet in store). Though I think he should take credit, because the site looks great. Antti and Soma did most of the primary development, and I think Teppo did too? Most of the development took place awhile ago, so please let me know if I'm forgetting anyone. Several of us also participated by offering feedback through the process. These guys did all this months ago, and they were patiently waiting on me to take care of a couple thing and launch it, which I finally did last week. In addition to viewing this site on the computer, I'm loving how it works on the iPhone and iPad. Antti initiated use of the Goldilocks approach in the development, which seems like the best responsive way to go. Something that I think still needs some work on the homepage is the screenshots. I'd like to setup a few different sets of screenshots that can appear there, where what you see now is just one example. If anyone has any good screenshots they think would work there, please send them over and we can test them out. I agree about the headline so went ahead and changed it after a couple comments here mentioned it. Since we're already showing the sky, we probably don't need to literally say "the sky". I think the headline still speaks well if you think of it in relation to skyscrapers, but the current headline (build bigger, faster, stronger, easier) probably has better substance, especially when combined with the new look. But keep thinking of new ideas too, we may be able to find something even better.
    2 points
  16. Hi, Here is another processwire powered site, completed recently. http://www.kapelis.com/ the way this is setup would not have been possible without processwire, which has made it easy and accessible for the client to update all aspects of the site without having to code or use a wysiwyg... -marc
    1 point
  17. Antti, yes, it's certainly possible. You can hook whenever and wherever you like. It's just a matter of being certain your hook has been registered before the event you're aiming for takes place. So you only need an autoload module to hook something you don't have full control yourself, and don't want to or are not able to require some initialization being called before using the hook. Here goes. And this one I tested a little so I know it works, for me at least . function myCustomAuthentication($event) { $user = $event->arguments[0]; $pass = $event->arguments[1]; // TODO: do whatever check is needed to authenticate $user // $pass has whatever you like, a token of some kind probably // must set replace-flag to prevent the original Session::authenticate() being called $event->replace = true; // return value is boolean // true: successfully authenticated // false: authentication failed $event->return = true; } // ...aquire a user name, somewhere, somehow... // hook *before* Session::authenticate() to override it // second argument is null because we're using a plain function and not a method inside an object $session->addHookBefore('authenticate', null, 'myCustomAuthentication'); // log in the user, passing whatever needed by myCustomAuthentication() as a password - if anything $user = $session->login("some-username", "some-token-with-a-meaning-in-this-very-context"); I'll actually be using this piece of code myself as well, this week I hope.
    1 point
  18. OK. What do we wait for? I could help with if we could create a basic but structured roadmap with distribution of tasks for that project.
    1 point
  19. You don't even need the two fields on the template. Since you only need one information, the title is enough. So, in your example, the title would hold the the "yes", "maybe" and "no" values. To output do this instead: $page->yes_no_maybe_selector->title; or $page->yes_no_maybe_selector->name;
    1 point
  20. Great explanation! I failed on the German accent though...
    1 point
  21. Was just wondering about that — seems misleading to me. Don't get me wrong, I love the Futura admin theme, but I think it would be better to feature the default theme.
    1 point
  22. Antti, it looks like this is a result of output formatting being on, so it's doing a string comparison rather than a time comparison. This is not intended and not a detail people should not have to account for, so I'd consider it a bug. Thanks for tracking it down. The bug is only for in-memory finds on date fields, not database finds, as it's working how it should there already. I've put a fix in the latest commit to the dev branch of you want to try it out. It shows two files updated, but the only one that matters here is /wire/core/Array.php https://github.com/ryancramerdesign/ProcessWire/commit/393e420fc8ab60670dc4c874dd8436789be2897c
    1 point
  23. Cheers Arjen, that's a good point. Think I have it though with cookies At top: <?php $settings = $pages->get("template=settings"); $info_bar = ""; if ($settings->info_bar) { $info_bar = $settings->info_bar; setcookie("InfoBar", $info_bar, time()+3600); /* expire in 1 hour */ } ?> To output <?php if ($settings->info_bar) { if ($input->cookie->InfoBar == $settings->info_bar) { } else { ?> <div id="info_bar"> <div class="container"> <?php echo $settings->info_bar; ?> <a class="close" href="javascript:void(0)">x</a> </div> </div> <?php } } ?> Am sure there's a million ways to improve that but it seems to be working for now...
    1 point
  24. It couldn't be a dd/mm/yy versus mm/dd/yy problem, could it?
    1 point
  25. If you use a page for the message you can use the $page->id? That also makes it possible to re-use messages.
    1 point
  26. Thanks Soma - that actually allows to remove it with delete/backspace also!
    1 point
  27. I can't seem to get repeater selectors work correctly with date fields. I have a repeater with four fields: photo (single image) bannerlink (page field) startdate (date) enddate (date) What I want to achieve is getting one random repeater which has startdate < time() < enddate. So it should have startdate which is before this very moment and enddate that is after this moment. Results I am getting are strange: // Get the current timestamp $time = time(); // I put my repeater pages into variable $banners = $page->shop_banners; // This is where things start to go strange $less_banners = $banners->find("enddate>0, enddate>$time"); foreach($less_banners as $p) { echo "START: " . $p->startdate . " < NOW: " . date("j.m.Y H:s", $time) . " < END: " . $p->enddate . "<br>"; } /* I have total 6 items, where 4 doesn't have anything on enddate, One has enddate before this moment and another has enddate after this moment. With that loop I get rows like: START: 7.8.2012 02:51 < NOW: 3.12.2012 14:42 < END: 4.12.2012 17:48 START: 2.12.2012 00:00 < NOW: 3.12.2012 14:42 < END: 2.12.2012 23:00 // THIS LINE SHOULD NOT BE HERE? */ // Then if I put it other way around: $less_banners = $banners->find("enddate>0, enddate<$time"); foreach($less_banners as $p) { echo "START: " . $p->startdate . " < NOW: " . date("j.m.Y H:s", $time) . " < END: " . $p->enddate . "<br>"; } /* I get zero results */ Show me where I am doing it wrong (I still have a bad gut feeling about doing something very silly here). I have tested this on pretty recent stable version and also latest dev version. I do similar stuff in many places (with events-item template etc), so I do know it should work - but for some reason I don't can get it working with repeaters.
    1 point
  28. I don't know how. But I think if you add "-div" to the valid elements it will get removed if empty. Edit: typo
    1 point
  29. yes, or simply filling the wiki. the point is having the information organized so we can decide what to do with it
    1 point
  30. This forum slowly turns into a stackoverflow. Works fine like this in all browsers: http://jsfiddle.net/mYYYF/2/
    1 point
  31. Clouds do move in Chrome & IE9, but not in Firefox. Glad to see Futura admin template featured on the front
    1 point
  32. A couple of options for you might be: Antti's Thumbnails module: http://modules.processwire.com/modules/fieldtype-crop-image/ - for the images where centre cropping isn't sufficient. something like phpThumb where you can specify a zone to crop from - top left, centre left, top middle etc. To do that you could have a custom field with each of phpThumbs as an option. Regards Marty
    1 point
  33. 1 point
  34. Make sure you are logged out too. Pages aren't cached for you when you are logged in. There are other factors that can disable the cache, but most under the template settings. And of course a page is only cached once the cache has been generated, so if you are hitting a bunch of pages for the first time in an hour then it's likely none of them were cached. In general, cache is only used for the 'guest' user. I am working on a so called super cache module that bypasses both MySQL and PHP. It uses the apache rewrite engine to pull cached urls directly from static files.
    1 point
  35. Just a very minor and not-at-all-important suggestion, but what about a bit of OS sniffing, and showing Mac users screenshots with Mac browser chrome, Windows chrome for Windows users, etc?
    1 point
  36. I'm new to PW and wanted to say thanks for such an awesome, elegant tool. I'm really looking forward to working with it. I hope to be able to help out and contribute some day. Really, though. I'm just blown away. Great job on your own site as well.
    1 point
  37. I quite agree - especially the last bit. I regularly set up Managing Editor - Section Desk - Author relationships on sites, in true newspaper style. Where Authors can write for any section, section desk editors can only edit their own section and managing editors commit to publish. Works especially well on magazine style sites where you have set publishing days to help make an impact. The other thing that could be added is public and private commenting. Public would be simply that - standard nested commenting system that the public can read. Private would be more like the Talk section of Wikipedia, but only available to the writers. You could have 5 publishing states: Published - Viewable to the public Commissioned - not yet published, but open to view from other registered users and private commenting Sent to Desk (or pending) - Awaiting editing and commissioning (only viewable by author and editor) Un-submitted - Still with the author Archived - withdrawn and kept for reference only. This should have notes with it explaining why it was withdrawn and an optional lock if it should not be re-published for any reason. And then versioning - though I find the Wikipedia's version of this confusing as hell! Google Site's versioning can be a bit better, as can MS Word. Maybe do something with showing edits and comments. A lot of that, of course, is luxurious stuff that can be grown onto the initial structure Joss (Note, I have a real bug-bear about the use of a "publisher" role in some CMS like Joomla where the publisher presses the publish button - Publishers are not editors and do not finalize copy. Publishers generally are the owners.)
    1 point
  38. Glad you found it. Eventually I think we'll have to add a 'default sort' option for repeaters, so that they automatically sort by some field present in the repeater.
    1 point
  39. Sure! You just need to know the name of the field (usually the same as the 'name' attribute) and then you can grab it directly from the Field object. Writing in browser here, but think it should work. It assumes you are somewhere in an Inputfield. $field = wire('fields')->get($this->attr('name')); if($field->textformatters) foreach($field->textformatters as $className) { echo "Name: $className"; } Many Inputfield functions already receive a copy of the $field, in which case you can just use that ($field->textformatters) rather than figuring it out yourself. Only text fields will have a 'textformatters' array, and you'd want to double check that it's actually present before using it.
    1 point
  40. Hi Christoph, Your english is very good, don't worry. Not sure I understand exactly what you want to do but serving "views" is relatively easy to achieve by allowing urlSegments in the template settings. You can then serve different views dependent on the urlSegment (which you will append to your "a" tags). Eg: if ($input->urlSegment1 == "category") { include("./categories.inc"); } You can then create categories.inc where you will test for the urlSegment2 and show the relevant category. So if your link goes to "blog/category/news", your template would help you output just the pages linked to the "news" category. // categories.inc <?php $name = $sanitizer->pageName($input->urlSegment2); $category = $pages->find("template=category, name=$name"); $articles = $pages->find("template=article, category=$category"); ?> Hope this makes sense, if not I can try and show you in more detail
    1 point
  41. Making a module derived from the InputfieldTextarea is probably the best bet. Once you've got it in place, you should see any of your textarea fields let you select it as an option (in the same place where it lets you select between Textarea and TinyMCE). What might be ideal is this: http://markitup.jaysalvat.com/examples/textile/
    1 point
  42. I attempted to duplicate the issue here a few times, but the only way I could duplicate it was (as Arjen mentioned) by enabling the cache for the template that the comments field appeared on. Though I don't think this is the issue in your case, because you still received an email, which would not happen of cache were the problem. Slightly off-topic: For those that want to use comments fields on cached pages, you can still do so. Edit your template that the comments field appears on (Setup > Templates > [some template]). Then click the "cache" tab. For "Comment disabling GET vars" enter "comment_success". For "Comment disabling POST vars" enter "text". Save. Now your cached pages will still work with the comments field. I'll have to find a way for this to happen automatically behind the scenes... but until then, this is the best route to using comments fields on cached pages. Back on-topic: Marc--do you see any related errors in your /site/assets/logs/errors.txt? Can you try going to your comments field and just hit "save"? (maybe there's some setting that needs to be refreshed). If that doesn't do it, try enabling the "Redirect after comment post" checkbox, which is something that I recommend for everyone now. Let me know if you see any change in behavior?
    1 point
  43. …and another update, the default admin theme is now responsive. Though I'm sure I'll be tweaking details on this for awhile.
    1 point
  44. For those that wanted field/template categorization, I've got them implemented for fields and now development the same for templates. This is one of those features that don't take effect until you use it. The hope is that it won't add any complexity for those that don't need it. There is now a "tags" field on the 'advanced' menu of any field: You can populate that field with one or more tags. Read the description in the screenshot. When you populate that tags field, suddenly the fields list starts grouping them by tag, like this: You can make a tag group appear collapsed by default by prepending a "-" to the tag. Any field can have multiple tags. It'll appear in as many groups as it's defined in. This isn't yet on the dev branch -- I will push it tomorrow after finishing up the Template tags. Can anyone else duplicate in 2.2.10 dev branch, DB session support module installed? I've never been able to duplicate it, but followed the official instructions on the solution to this issue so afraid to change much more until it's repeatable.
    1 point
  45. I was just testing out this screencast service that I saw Apeisa's been using, and made a little screencast demonstrating installation and use of your GMap module. http://screencast.com/t/IaCFikQwn
    1 point
  46. Hope you don't mind, but I added some stuff to your GMap module for fun. I modified it so that it has a field configuration option for "add markup automatically". So if you check that option on the field, then you don't have to add any code in your template other than this: <?=$page->map?> In the above, snippet, you would replace 'map' with your map field name. The updated file is attached. I think this is what you were trying to do before when we were writing in the other thread, so I figured it would be worthwhile for me to add it, in case it helps to demonstrate how. Another thing that I think would be cool is if there was a configuration option for it to pull an address from some other text field on the page. Then it would geocode and save it, so that it doesn't have to geocode again. Though I'm not yet sure how to do that, so just thinking... Thanks again for your work in putting this module together. This is something I will definitely use. Edit: Accidentally left a debug "echo" statement in the previous module, so have replaced it with a new version. GMap2a.zip
    1 point
×
×
  • Create New...