World Map Photo Album


Using openlayers & geofield to put image... by kiwipion

Introduction

In this tutorial we will be creating a map of the world and providing the option to insert galleries into it. 

Modules

If you have already followed the either the field gallery tutorial or node gallery tutorial tutorials, the only extra modules you will need to install will be

Module Location
Openlayers http://drupal.org/project/openlayers
Geofield http://drupal.org/project/geofield
Libraries http://drupal.org/project/libraries
GeoPHP Library https://github.com/phayes/geoPHP

Drush commands to install and enable if drush is your thing. 

drush dl geofield-7.x-1.x-dev openlayers-7.x-2.x-dev libraries-7.x-2.x-dev
drush en openlayers_views, openlayers_ui, openlayers, geofield, libraries

I'll be downloading the current dev versions of each, which are required because openlayers has been undergoing changes which affects geofield.

GeoPHP will have to be downloaded separately and put into the libraries folder.

Note because both the OpenLayers & Geofield modules are in development you will see warnings but these will not impede what we are attempting to achieve in this tutorial

Setup

A good description of the initial setup is described here http://drupal.org/node/1089574.

Go into Structure -> OpenLayers -> Settings page and select "Geofield Formatter Map". Then add a new map by cloning the "Geofield Formatter Map". Make sure one of the Base Layers is enabled in the "Layers & Styles" section, I'll be using OSM Mapnik.

Go into the field gallery or node gallery manage fields page, we are going to add the geofield field to the node gallery content type.  Background details can be found from the field gallery tutorial or node gallery tutorial

Add the geofield and select the widget to "Openlayers Map'. Inside the edit settings make sure you have selected the Geofield Widget Map.

Now go into the existing galleries and assign a location to the geofield in each of the node galleries (or field galleries if you have added the geofied to the field gallery content type). Here is an example below, note the orange dot at the lower center of the image.

Go into views, we need to create a view that is going to take the geofield and insert it into the openlayers map. Create a new view, then add the "OpenLayers Data Overlay" display view.

Then add the geofield that we created inside the node gallery content type and set the Formatter to "Well Known Text (WKT)".

Change the Unformatted list to "OpenLayers Data Overlayer" and select the style options as such

Add the Type filter criteria and select one of your gallery types.

Save the display view and go back to the Map you created in OpenLayers and enable and activate the name of your view in the "Layers & Styles" section such as the example below.

Now go back to the view and add another display view. I'll be creating a page view but some people may prefer a block view. Set the path, I'll make mine "worldmap", the format to "OpenLayers Map"  and the Page:Style options to the map that was created from the OpenLayers module.

Now put the page view path into the main menu and I'll call mine "WorldMap" and you should see something similar to this.

The last step of this tutorial will be to add a pop out which will display a link to the gallery. Go the "Behaviors" section in the OpenLayers's Map you created and select  Pop Up box and then the layer which should be directly underneath as such,

Now your worldmap should look like this when you click on one of the orange dots.

If you want to replace the orange dots with something more appropriate or prettier go into the "Styles" section of OpenLayers and add a new style making sure you put a link to the new image in the "externalGraphic "box

Final Thoughts

If desired you could do something similar to the node images themselves by assigning a geofield to its own image or photo. This tutorial along with the field gallery tutorial and node gallery tutorial shows the flexibility that Drupal gives you when you create your own web applications such as Image Galleries.

By spending the time mastering the Drupal modules you are well placed to extending the functionality of whatever web application you are implementing as demonstrated by adding the worldmap on top of the galleries.

Thanks for dropping by and remember don't forget to flush your cache! 

Comments

Submitted by Karl (not verified) on

This tutorial is a life saver! OpenLayers on D7 is a serious challenge, and this tutorial is a shining beacon. Well done!

Submitted by Ritesh (not verified) on

Thank you very much - it was helpful. My next step is to figure out how to use colored polygons of different shades based on say population density...any hints?

Submitted by nigel on

Off the top of my head, I have not seen much details about theming in OpenLayers, which is ideally what you want do with the polygon co-ordinates provided from the Geofield.

You can create your own OpenLayers style and attach a polygon image, but I imagine this would be a very manual process ie you would need a polygon image per layer.

Have a dig around to see to if there is more information about OpenLayers theming.

Submitted by Yanni (not verified) on

Absolutely fantastic tutorial I followed it and it worked perfectly! What about emailing the OpenLayer developers to add a link on the OpenLayers drupal page to your tutorial.

Also I would like to ask for advice on this, I want to make a block display which will display only one geofield point that of the node the block appears in. With your excellent tutorial I managed to make a block display which appears in each of the nodes but displays the points of all the nodes. Any advice on how do I go about making this change?

Many thanks for the great tutorial!

yanni

Submitted by nigel on

One way to achieve this is to setup a context filter on your wdk field in your view. You will want to return the value of the wdk field by setting up the type as "PHP Code"  and implementing some code to return the value of the wdk field.

Because you will need to implement a bit of php code, it's not so straight forward but what you want is a common use case. Let me put this on my to do list for a video tutorial.

Submitted by yanni (not verified) on

many thanks nigel for your tip I will look it up.

Submitted by yanni (not verified) on

Hi again, I was searching for code that does the one possible way you mentioned above and by chance I found a way I felt more comfortable with because does not involve writing php code. I will mention it here in case that someone else reads this thread and looking to do the same thing.

1. In the view (block view for me) I added a contextual filter (under Advanced). The filter I added was content: Nid. Then I clicked the button to move to the next screen
2. Under "When the filter value is NOT available" I chose "Provide a Default Value"
3. On the Type dropdown I chose "Content ID from URL"
4. I clicked apply and now the block displays only the dot corresponding to the geofield of the current node.

Many thanks for the great tutorial!

Submitted by nigel on

Thanks for posting this Yanni, the best solution is usually the most straight forward one, ie does not involve that extra layer of coding.

Submitted by nigel on

Thanks, for pointing that one out :-)

Submitted by Tomas KLIMENT (not verified) on

Dear all,

I am currently using Drupal 6 and need functionality that I guess is provided by Geofield. What I need exactly is to draw Bounding Box on the openlayer map and automatically fills in my form 4 fields - bounds (North Bound Latitude, East Bound Longitude, South Bound Latitude, & West Bound Longitude) in order to store geospatial extent. Do you know whether this function might be gained using Geofield module, or does it exist any module for Drupal 6 to fulfil my requirement?

Many thanks in advance for your help.

Submitted by nigel on

Unfortunately you cannot use Geofield because it has been implemented for Drupal 7 but try using the geotaxonomy module this may provide you with the functionality you require.

Submitted by MrMaksimize (not verified) on

Man!! This is such a great tutorial. Saved me hours of tinkering!

Submitted by nigel on

Glad you liked it, I'm working on part 2 of this tutorial which will demonstrate what gets shown in the pop up box.

Submitted by Vadim (not verified) on

Hi, Thanks for great tutorial.
Do you know any way on how to make that dots do be dynamic? I need kinda different radius and color of the circle depending on the density.

Any thoughts greatly appreciated.
Thank you!

Submitted by nigel on

Hi, I had a similar posed posed to me recently. I gather you mean you want the dot marker size to increase / decrease when zooming in and out? Currently there no support for this in Openlayers, in fact I'm not sure I have seen this implemented anywhere before, have you got any examples of this such as in google maps?

Probably a good use case to propose to Openlayers, current thoughts are it would probably require some sort of array to match the zoom levels against a particular icon style with the size.

Submitted by Tim (not verified) on

Thanks, Nigel. I appreciate your tutorial and after a couple of false starts with OpenLayers, it's great to have something actually running!

My question is about exposing the Views filters. I'm not seeing how this is possible if the second view is showing results of the first view. As an example, if your node galleries were separable into Drupal events and vacations using taxonomy, could certain dots on the map be filtered dynamically by the visitor?

Submitted by nigel on

Hi Tim, Contextual Filters (Views Arguements) can control what you want to be display onto the map. It's the same as you would normally do in views. For example I remember setting up a couple of Geofields, one  for setting a border on the map and the other defining a route in that border. Each border route would be assigned to its own content page and to achieve this I used a contextual fllter by Content Nid.

In otherwords you can control which dots get shown on either a page or block using content nid's, taxonomy terms etc ...

Is this what you are trying to achieve or did I misunderstand the question?

Submitted by Tim (not verified) on

Thanks, Nigel. Pardon me for my ignorance. I haven't used Contextual Filters before, nor have I ever exposed filters in a View. Where does one put the CF expression and taxonomy info? What I tried was using the Data Overlay view to get the taxonomy terms, then the second view to show the map and apply the filters. But nothing happened when I typed a value in the exposed filter. If I instead put everything on the Data Overlay view, I get an error if I expose the filter, and when that's removed and I put a term in the URL instead, all my dots disappear.

(BTW, I don't really understand how the CFs are supposed to work. My settings didn't seem to allow me to link to a specific vocabulary. Googling didn't help--I'm now more confused than before about arguments in Views. Sigh.)

Submitted by nigel on

I recommend doing some tutorials on Contextual Filters (Views Arguments) just to give to more insight into what is going on there, or else it's quite easy to get stuck using them. http://mustardseedmedia.com/podcast has a couple of tutorials based on views arguments, which should help.

Back to your comment, Open your Openlayers Data Overlay Display and select add contextual filter. Select "has taxonomy term id" and then click provide default value, and select taxonomy term id from URL. I normally select the load default filter from node page and choose my vocabulary. Save that and it should now be providing a term id as an extra argument to your page display. In the tutorial example the page display set the path to worldmap, so by selecting /worldmap/tid you should have the dots belong to a particular taxonomy term id. To find the value of the term id you need to have the pathauto module enabled and installed, then its just a matter of going to this path admin/config/search/path/list and match your term to find the term id.

Hopefully this will point you in the right direction, this would be much better expained in a screencast, if I can find the time I'll consider putting one together covering contextual filters with views openlayers.

Submitted by Tim (not verified) on

Thanks again. I really appreciate your taking the time to answer my questions. Perhaps what I'm not understanding is why we'd need contextual filters at all. In my case, I'd like to have a single page that let's the viewer drill down on the map. So, for example, I might have a map of global events. I want to let the visitor use check boxes to show just dots for, say, media events, and of those, events that took place during the past year. If this second view (pointing to our overlay) is getting us the data, shouldn't it also be able to use standard Views filters?

A corollary question: What exactly is the overlay view generating? Is it passing that array (the one shown by Drush views-dev) to the other view? Or is it just passing node references? I was able to filter by content type, so my assumption is that the overlay view is constraining the data set in some way -- i.e., not just giving us all nodes that have geofield data. Sorry if you already said this in your screencast; this has been confusing enough that some info has rattled out of my brain.

Submitted by nigel on

They can have certain limitations such as you need to create a view for each taxonomy term, which can add up when you have a number of terms, where with the contextual filters you just need the one views display. It does depend on your requirements, if you have only one taxonomy term, yeah just set up one standard filter on the overlay display. Again the mustseedmedia podcast does demonstrate the differences between the two quite well.

And answer to the collary, what does the overlay generate? If you mean like render to page, nothing, but on creating the overlay display you now now provided a connection to one of the Openlayers Maps, in the form of an additional layer. Openlayers can then provide an additional format to the view which can render it to either a page or block. The Overlay Display can also act as a tap of sorts where you can restrict the content, in this case the Geofield Data in the form of filters and yes in the case of Openlayers this will restrict the content to the other displays as well.

 

Submitted by Tim (not verified) on

OK, I don't really understand why separate views are necessary -- I have a non-map View doing producing a simple list of my locations for which an exposed taxonomy filter is working fine -- but it sounds like some dark magic is going on in creating the base layer and data layer, and I'll take this on faith until I understand more.

But either way, this isn't working for me. If I use contextual filters, I get either all dots or no dots. (I have three nodes with one term, and one node with another term.) If I use a standard filter, nothing happens -- no filtering, and thus all my dots.

Might there be any gotchas for setting up these views that you haven't discussed? My Views are pretty plain-jane, and the only thing that stands out for me is that there is a Content: Published filter on both views. I'm not getting any Views errors, but I am using the most current version (more recent than your videos), and I'm not using dev versions of any of these modules.

Submitted by nigel on

Especially for Openlayers, I did have issues last year with the release versions. No Gotcha's but I probably did'nt list every singe step in the comments, that would have turned the posts into a book. So you are seeing nothing when you look at the /worldmap/% locations or what ever path you are using?

Submitted by Tim (not verified) on

Two different questions that perhaps you can answer:

First, I have also messed around with GMap and the Location modules. While I don't particular care for the current implementation, I do like that Location seems (sometimes) to be able to provide address lookups. For my geo-mapped projects, I can imagine clients wanting to 1) type and address, 2) specify a state or country, or 3) placing a dot by hand. So my question is whether there is something like this for Open Layers -- either a version of Location or something similar?

And second, since I'm totally new to Drupal mapping, I'm wondering whether there are freely available resources for common geographical info. For example, lists of city locations, or boundaries for countries? It would be lovely to be able to group dots in such a way that they were represented by the shape of the country in which they existed. This seems like a no-brainer (in terms of feature ideas, anyway), but when I went to BADcamp last October, it was not immediately clear that each implementer didn't need to create their own data sets. (One audience member mentioned Google's fusion layers, but there was no clear answer as to whether something similar exists for OSM.)

Thanks again!!

Submitted by nigel on

It's possible some people have written modules that provide the functionality you are looking for but I have not yet searched for these. A point to note was last time I looked there were a number of Drupal 6 modules that had not been ported to Drupal 7 and I gather there were migration path issues with some of them, so I think some people have probably been implementing new ones from scratch in a similar vein to Geofield.

An interesting point you bring up about the data sets, I'm wondering which organisation / group would own / be responsible for them? Probably not Drupal or Openlayers, maybe organisations like google and openmaps? Creation of these dataset could be a significant undertaking since the audience would want different types for different geographies.

Submitted by Tim (not verified) on

Hi again. So just to make sure that I at least partly understand OL, I watched your tutorial again, and I think I get the basics. Still confused about what needs to go into the overlay (in terms of data -- the Drupal tut recommends including Content: Body and Content: NID http://drupal.org/node/1164886), but this part wasn't my problem.

What I wasn't doing was including the actual TID. I thought my validation was converting terms to TIDs, but apparently not. In fact, if you do a CF video, it would be great if you explain the different settings. The Mustardseed video I watched didn't quite get into all those details.

So to close the loop on this bit (at least), what I'd like to know is whether I can somehow set up my view to show all values if I omit the argument in the location bar (say /worldmap, instead of /worldmap/%) -- or to put it another way, how do I show **all** my nodes within a vocabulary? (I tried putting in bogus TIDs to get validation to show all, but wasn't successful.)

And also, I'm guessing that in the CF saying "Term name" should give you something like 'vocab-term-1', but it seems only to be giving me the TID. Is this a bug in Views?

Submitted by nigel on

There have been some recent changes on Openlayers in the dev version which make your reference a little dated. If you look at my second tutorial you will see I create a View Mode for a node and render that on Openlayers.

I'll look into doing a video but I can't give you a timeframe on that at the moment.

If you wanted to use the /worldmap path only, don't use the contextual filter and just add your terms to the filter criteria. Not to sure what you mean by bogus TID's, they need to be authentic ones, use pathauto to find them.

Where are you seeing "Term name" in the contextual filters? Most the fields in the contextual filter "Content: Has taxonomy term ID" refer to term id, which uses term id not term name.

Submitted by Tim (not verified) on

Re the idea of View Modes for results, I saw you did that, and wonder, too, if you've messed around with the Display Suite? I was pretty impressed by the videos I saw covering it; it has the potential of obviating so much template hacking, as well as the need for special HTML with node content. I want to experiment with it for these Open Layers maps, and have not yet only because I'm really trying to get this layering/filtering thing down first. (If I can't get the visitor the ability to drill down, then nicely formatted map content won't matter much. At least in my case!)

But to your other question, the "Term name" option is coming from one of the settings for "Content: Has taxonomy term ID". It is under "When the filter value IS in the URL or a default is provided
> Specify validation criteria > Action to take if filter value does not validate". There is a second option "Term name converted to Term ID". So it seemed to me that this suggests one could use the Term name (e.g., foo or bar), rather than the Term ID (e.g., 0 or 1). However, both seem to take the Term ID only; using a term name results in no dots. I smell a bug, but I'm not sure whether this would be a bug in OL or Views or something else. I just don't have enough knowledge of Drupal's underpinnings to figure this out.

Submitted by nigel on

I tried out Display Suite a while ago and it is a good very tool, though I did not like the formatting it added to my fields, I'm a semantic views kind of guy and like all the formatting stripped out so I can add my own, its probably a trait of control freaks ;-)

Ah I was wondering if you have traversed that far down in the filter settings. Views is a very powerful tool, and sometimes offers you more settings than are actually available in this case term name. The clue is in the title name "Has taxonomy term ID only", taxonomy term only. Ideally in the perfect world someone would have time to implement fitering in views which disabled options such as this based on the name of the contextual field.

Submitted by Tim (not verified) on

I did finally figure out a solution to my version of the problem. My legs are still a bit shaky on the details, but I found this thread http://drupal.org/node/789668 that talks about exposing filters via a block.

So the way to do this is to first use the same view for your overlay and your rendered maps. (It's actually not clear to me that you need to use the same view -- my tests say no, but the thread I referenced says yes.) Then, put the exposed filter criteria into the overlay AND data views. In the overlay view, under Advanced, use Expose Form > Use Input, and in the data view, under Expose Form, use Expose as Block. Save the view, then enable the block on the map page (e.g., /worldmap) set within the view. Viola! It works. The only trouble I had was that the initial URL doesn't include "?tid=All" and thus no dots are rendered until clicking Apply on the block.

From what I'm reading, it looks like this might be the only way to do this at present (so hard to know when so much of the online documentation is two years old!!) But for my purposes, this is pretty much exactly what I wanted, and I think I can use Display Suite if I need to put blocks "within" the content (i.e., right above or below the map).

Curious if you have any additional thoughts on this. Thanks!

Submitted by nigel on

It's good you made some progress on this Tim. I am conscious that this is a basic introduction to Openlayers tutorial and these comments are focusing mainly on views filtering so let me put a tutorial together which useses taxonomy terms, show all the dots as well as the ones filtered out by contextual filters and uses a block menu to select which term. Currently I have this working on one of my sandbox prototypes.

I think this will be the most time effient approach for both of us. I'll use a different technique than exposed form but at least it will give you exposure to one way of implementing this and other viewers will also find it useful, I expect to release the tutorial in 3 - 5 days time.

Submitted by Tim (not verified) on

Thanks Nigel. I'll be very interested to see what you come up with. In going to the next step -- including two taxonomy fields -- I ran into problems with OL. These work totally fine with a standard view, but OL doesn't seem to be ANDing or ORing the IDs, and thus, all of the dots appear.

The other thing that I'm curious about is using multiple layers. I read somewhere someone doing lots of layers. And this left me with three questions:
1) How does one add a second (or nth layer) to a map?
2) What are the main reasons one would **want** to create multiple layers?
3) How might one use filtering to control what appears on the various layers?

Since I'm still quite ignorant of what the OL data overlay is actually doing, I'm conceptually stuck. (I do hope do have time soon to dig under the hood. I want, too, to see whether I can control these maps with JQuery.)

Thanks again!

Submitted by nigel on

Not to sure which layers you mean Tim, there's a setting in Openlayers for adding base layers and overlays can be created with views. 2) Depends on which layer you are talking about, ditto for 3).

ANDing and ORing of term id's would be done in the View Overlay's part, there is a setting at the very bottom of the view contextual filter that seems to support this but I had some strange behavior when I enabled this flag and tried this out. Then I had a look in Drupal at views and there were serveral issues raised against this so it may be work in progress.

Another more fun solution is to provide php code in the default value in the taxonomy term id contextual filter and run your own queries (depending on your database MySQL), this will support you further if your next steps are going to involve complex arrangements of term ids.

Btw you probably have noticed by now that the new Openlayes video has been uploaded.

Submitted by María (not verified) on

Hey.
I followed the tutorial and it went great. It's great. However, I have seen that geofield can refer to another field, such as addressfield. I tried doing it this way, but the map does not display anything. I would like to take geofield field data address field and show it on a map. Would you know can be done?

Submitted by jefkin (not verified) on

Hi Nigel, awesome tutorial, and I feel very lucky to have hit it on my first googling about drupal and maps :D

I want to point out a few gotchas.

#1) stopped me from following your tut for about half a day. Something in the current configuration of the Openlayers + everything else menagerie is throwing an uncaught exception that breaks previews, including the Openlayers *by-configuration* Preview, the Openlayers mini-preview in the "Layers & Styles" vertical tab while editing or cloning a map, and also, sadly in the views preview ...

The good news is it is working ... and probably just a small problem, but the bad news for newbies in this is it can be hard to keep the faith about what you're doing, following the tutorial while you have little or no feedback via the previews.

#2) After Getting my demo up and running and feeling pretty happy, I turned over to my QA team who promptly broke it ... Gotta love QA teams... and me with no preview, It took a while to track down the problem. The problem was, one of the nodes that had the Geofield added to it, and was in our nifty view, had 2, count them, 2 points added. This broke the view. So I tried to find a way to prevent that problem, and came up with zilch. Currently I'm thinking I need some sort of submit filter on node save to check for the field and the condition... Seems hacky but will have to do ... until then put a note under the field saying Please only add one point ... :-/

jefkin

Submitted by tom (not verified) on

Hi, I've got everything up and running following your tutorial. I haven't been able to figure out how to get the title field to display next to the marker instead of in a popup. Is this possible? I've tried editing the views overlay to include the title field, but that didn't work. Any suggestions?
Thanks.

Submitted by nigel on

Hi Tom, markers are implemented in Openlayers as styles but I don't see any settings that add title name to the style. There is this thread here that discusses this with a possible way of implementing it.

Nigel

Submitted by Bryan (not verified) on

I have my maps working, but when I click on a marker, it shows me the title/text from a different node -- the one post immediately prior to the marker's node. Any ideas?

Submitted by John (not verified) on

Thank you Nigel for your nice tutorial.
I'm really new to drupal, but I could thanx to you complete the the node gallery tutorial and I tweaked the world map album using "image" node instead of "gallery".
To locate images only on the map not galleries.
My problem is I can just only see seven locators linked to my images on the map viewer at the same time.
I noticed there where a pager bellow the map viewport. when I move the pager to the next map view I can see my others locators linked to my images. I tried different combination in view with no pager for the map, but I cant have what I wish to have.

I have thousand images from different galleriesI want to locate on the map in one viewport and with no pager bellow the map viewport. But I can't just see seven max locator at the same time on the map.

Any help would be very appreciated.

Many thanx

John

Submitted by John (not verified) on

Hello Nigel
OK I found it. It was in the Openlayers view. I just remove the pager and I see all my link in my clustered marks.
But now I can't manage to display images in the popup view. on image popu for each images.
I follow the world map album tutorial linking all to the node to image instead of the node gallery. And I add the geofield field in the add image node. I have no problem to display my popup with just the links to the image and links are ok but I did not find the way to display the image in the popup.

When I'm trying to change the openlayers view settings to <entire_raw> I don't see the entity_mode_view I created at the beginning of the tutorial. I can see it only using the <entire_node> in description content of the openlayers style option. then my gallery page is not accessible a t all but I see images in my popup.

On my image view based on the cloned view of the gallery where I have change it from node gallery to image. when I change the format to content and link the entity view mode I loose all my display and I get an Ajax error code result 500.
Well after a few days of trying, I'm stuck here.

It would be very nice if you could made a tutorial with the popups linked to image with a small display of the image in it.

I love your tutorials.
John

Submitted by nigel on
You want a single image displayed to your popup box which links to your image galleries? If so, in views you will need to select rewrite results for the image field and pass it the address of your galleries with the help of the nid for the gallery. I do the rewrite results a number of times in following tutorials to change the address of links. All the best with this, Nigel

Submitted by John (not verified) on

Thank you Nigel.
I could not find the way using the rewrite option after many try...
But I find another way. I just add the image field in the Openlayers Data Overlay view. I chosen the pop view image style.
And I selected it in the Format/ Openlayers settings. it now looks like this.
Map Data Source> WKT
WKT Field> content: add demo geofield
Title Field> content: Title
Description Content> Content: add node image

And I have now a nice popup with a resized image of my image with the title liked to it.
Thank you!
John

Submitted by nigel on
I'm glad you found your solution John. Nigel

Pages

Add new comment

Plain text

  • No HTML tags allowed.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.
CAPTCHA
This question is for testing whether you are a human visitor and to prevent automated spam submissions.

Recent Tweets

  • New post: Posting location co-ordinates to a drupal service - Part 2 http://t.co/MQhlVKBNKC 1 month 4 days ago
  • New post: Posting location co-ordinates to a drupal service - Part 1 http://t.co/2xlYgqFaJ0 1 month 5 days ago
  • New post: Connecting a drupal service with a mobile application - Part 2 http://t.co/01cFtAunDs 1 month 5 days ago
  • New post: Using drupal services to connect to mobile applications - Part 1 http://t.co/VEURftHCef 1 month 5 days ago
  • New post: Creating Drupal 7 video gallery http://t.co/HvpKU7uT 3 months 1 week ago