Google Maps Widget – Ultimate Google Maps Plugin - Version 3.25

Version Description

  • 2016/03/24
  • even more new map pins
  • bug fixes
  • 7 days trial can now be activated within the plugin
Download this release

Release Info

Developer WebFactory
Plugin Icon 128x128 Google Maps Widget – Ultimate Google Maps Plugin
Version 3.25
Comparing to
See all releases

Code changes from version 3.20 to 3.25

Files changed (267) hide show
  1. css/gmw-admin.css +196 -32
  2. gmw-widget.php +1 -2
  3. google-maps-widget.php +166 -64
  4. images/icon-trial.png +0 -0
  5. images/icon-unlimited.png +0 -0
  6. images/icon-yearly.png +0 -0
  7. images/pins/big/atom.png +0 -0
  8. images/pins/big/camel.png +0 -0
  9. images/pins/big/checkmark.png +0 -0
  10. images/pins/big/clover.png +0 -0
  11. images/pins/big/craft_store.png +0 -0
  12. images/pins/big/crowd.png +0 -0
  13. images/pins/big/customs.png +0 -0
  14. images/pins/big/dance_class.png +0 -0
  15. images/pins/big/dancing_hall.png +0 -0
  16. images/pins/big/daycare.png +0 -0
  17. images/pins/big/deep_sea_fishing.png +0 -0
  18. images/pins/big/deer.png +0 -0
  19. images/pins/big/dentist.png +0 -0
  20. images/pins/big/department_store.png +0 -0
  21. images/pins/big/detective.png +0 -0
  22. images/pins/big/diamond.png +0 -0
  23. images/pins/big/dino_park.png +0 -0
  24. images/pins/big/diving.png +0 -0
  25. images/pins/big/dogs_leash.png +0 -0
  26. images/pins/big/dolphins.png +0 -0
  27. images/pins/big/drinking_fountain.png +0 -0
  28. images/pins/big/duck.png +0 -0
  29. images/pins/big/earthquake.png +0 -0
  30. images/pins/big/elephants.png +0 -0
  31. images/pins/big/exchequer.png +0 -0
  32. images/pins/big/farm_stand.png +0 -0
  33. images/pins/big/fast_food.png +0 -0
  34. images/pins/big/field.png +0 -0
  35. images/pins/big/find_a_job.png +0 -0
  36. images/pins/big/fish_chips.png +0 -0
  37. images/pins/big/fishing.png +0 -0
  38. images/pins/big/fishing_boat.png +0 -0
  39. images/pins/big/fitness.png +0 -0
  40. images/pins/big/fjord.png +0 -0
  41. images/pins/big/food_truck.png +0 -0
  42. images/pins/big/fountain.png +0 -0
  43. images/pins/big/four_by_four.png +0 -0
  44. images/pins/big/frequency_change.png +0 -0
  45. images/pins/big/frog.png +0 -0
  46. images/pins/big/fruits.png +0 -0
  47. images/pins/big/gas_cylinder.png +0 -0
  48. images/pins/big/geocaching.png +0 -0
  49. images/pins/big/geothermal_site.png +0 -0
  50. images/pins/big/geyser.png +0 -0
  51. images/pins/big/ghost_town.png +0 -0
  52. images/pins/big/gift.png +0 -0
  53. images/pins/big/glacier.png +0 -0
  54. images/pins/big/glasses.png +0 -0
  55. images/pins/big/gondola.png +0 -0
  56. images/pins/big/groceries.png +0 -0
  57. images/pins/big/gumball_machine.png +0 -0
  58. images/pins/big/handball.png +0 -0
  59. images/pins/big/hanggliding.png +0 -0
  60. images/pins/big/hare.png +0 -0
  61. images/pins/big/hat.png +0 -0
  62. images/pins/big/haybale.png +0 -0
  63. images/pins/big/highschool.png +0 -0
  64. images/pins/big/historical_museum.png +0 -0
  65. images/pins/big/historical_quarter.png +0 -0
  66. images/pins/big/home_center.png +0 -0
  67. images/pins/big/hookah.png +0 -0
  68. images/pins/big/horn.png +0 -0
  69. images/pins/big/horse_riding.png +0 -0
  70. images/pins/big/hospital.png +0 -0
  71. images/pins/big/hotspring.png +0 -0
  72. images/pins/big/hunting.png +0 -0
  73. images/pins/big/hut.png +0 -0
  74. images/pins/big/ice_hockey.png +0 -0
  75. images/pins/big/iceskating.png +0 -0
  76. images/pins/big/indoor_arena.png +0 -0
  77. images/pins/big/jacuzzi.png +0 -0
  78. images/pins/big/japanese-food.png +0 -0
  79. images/pins/big/japanese-temple.png +0 -0
  80. images/pins/big/jeep.png +0 -0
  81. images/pins/big/jogging.png +0 -0
  82. images/pins/big/judo.png +0 -0
  83. images/pins/big/karate.png +0 -0
  84. images/pins/big/karting.png +0 -0
  85. images/pins/big/kayak.png +0 -0
  86. images/pins/big/kebab.png +0 -0
  87. images/pins/big/key.png +0 -0
  88. images/pins/big/king.png +0 -0
  89. images/pins/big/kiosk.png +0 -0
  90. images/pins/big/kitesurfing.png +0 -0
  91. images/pins/big/landfill.png +0 -0
  92. images/pins/big/latern.png +0 -0
  93. images/pins/big/library.png +0 -0
  94. images/pins/big/lifeguard.png +0 -0
  95. images/pins/big/lingerie.png +0 -0
  96. images/pins/big/lobster.png +0 -0
  97. images/pins/big/magic_show.png +0 -0
  98. images/pins/big/map.png +0 -0
  99. images/pins/big/marina.png +0 -0
  100. images/pins/big/military.png +0 -0
  101. images/pins/big/modern_tower.png +0 -0
  102. images/pins/big/monkey.png +0 -0
  103. images/pins/big/mosque.png +0 -0
  104. images/pins/big/movie_rental.png +0 -0
  105. images/pins/big/muffin.png +0 -0
  106. images/pins/big/muffin_bagle.png +0 -0
  107. images/pins/big/mural.png +0 -0
  108. images/pins/big/museum_archeological.png +0 -0
  109. images/pins/big/museum_art.png +0 -0
  110. images/pins/big/museum_craft.png +0 -0
  111. images/pins/big/museum_openair.png +0 -0
  112. images/pins/big/museum_war.png +0 -0
  113. images/pins/big/music_choral.png +0 -0
  114. images/pins/big/music_classical.png +0 -0
  115. images/pins/big/music_hiphop.png +0 -0
  116. images/pins/big/music_live.png +0 -0
  117. images/pins/big/music_rock.png +0 -0
  118. images/pins/big/nanny.png +0 -0
  119. images/pins/big/newspaper.png +0 -0
  120. images/pins/big/no-nuke.png +0 -0
  121. images/pins/big/nursery.png +0 -0
  122. images/pins/big/nursing_home.png +0 -0
  123. images/pins/big/one_way.png +0 -0
  124. images/pins/big/pagoda.png +0 -0
  125. images/pins/big/paintball.png +0 -0
  126. images/pins/big/palace.png +0 -0
  127. images/pins/big/paperclip.png +0 -0
  128. images/pins/big/paragliding.png +0 -0
  129. images/pins/big/parasailing.png +0 -0
  130. images/pins/big/parking.png +0 -0
  131. images/pins/big/party.png +0 -0
  132. images/pins/big/patisserie.png +0 -0
  133. images/pins/big/pen.png +0 -0
  134. images/pins/big/penguin.png +0 -0
  135. images/pins/big/perfumery.png +0 -0
  136. images/pins/big/petanque.png +0 -0
  137. images/pins/big/petroglyphs.png +0 -0
  138. images/pins/big/phones.png +0 -0
  139. images/pins/big/photography.png +0 -0
  140. images/pins/big/printer.png +0 -0
  141. images/pins/big/prison.png +0 -0
  142. images/pins/big/puzzle.png +0 -0
  143. images/pins/big/radio_control_model_car.png +0 -0
  144. images/pins/big/railroad.png +0 -0
  145. images/pins/big/rainy.png +0 -0
  146. images/pins/big/rape.png +0 -0
  147. images/pins/big/resort.png +0 -0
  148. images/pins/big/restaurant_african.png +0 -0
  149. images/pins/big/restaurant_breakfast.png +0 -0
  150. images/pins/big/restaurant_buffet.png +0 -0
  151. images/pins/big/restaurant_fish.png +0 -0
  152. images/pins/big/restaurant_greek.png +0 -0
  153. images/pins/big/restaurant_indian.png +0 -0
  154. images/pins/big/restaurant_italian.png +0 -0
  155. images/pins/big/restaurant_korean.png +0 -0
  156. images/pins/big/restaurant_mediterranean.png +0 -0
  157. images/pins/big/restaurant_mexican.png +0 -0
  158. images/pins/big/restaurant_romantic.png +0 -0
  159. images/pins/big/restaurant_steakhouse.png +0 -0
  160. images/pins/big/restaurant_tapas.png +0 -0
  161. images/pins/big/restaurant_thai.png +0 -0
  162. images/pins/big/restaurant_turkish.png +0 -0
  163. images/pins/big/revolt.png +0 -0
  164. images/pins/big/rollerskate.png +0 -0
  165. images/pins/big/ropescourse.png +0 -0
  166. images/pins/big/rowboat.png +0 -0
  167. images/pins/big/rugby_field.png +0 -0
  168. images/pins/big/ruins.png +0 -0
  169. images/pins/big/sandwich.png +0 -0
  170. images/pins/big/sattelite.png +0 -0
  171. images/pins/big/sauna.png +0 -0
  172. images/pins/big/scubadiving.png +0 -0
  173. images/pins/big/segway.png +0 -0
  174. images/pins/big/seniorsite.png +0 -0
  175. images/pins/big/septic_tank.png +0 -0
  176. images/pins/big/share.png +0 -0
  177. images/pins/big/sheriff.png +0 -0
  178. images/pins/big/shore.png +0 -0
  179. images/pins/big/shower.png +0 -0
  180. images/pins/big/signpost.png +0 -0
  181. images/pins/big/ski_boot.png +0 -0
  182. images/pins/big/skiing.png +0 -0
  183. images/pins/big/skijump.png +0 -0
  184. images/pins/big/skilifting.png +0 -0
  185. images/pins/big/skis.png +0 -0
  186. images/pins/big/sleigh.png +0 -0
  187. images/pins/big/slots.png +0 -0
  188. images/pins/big/sneakers.png +0 -0
  189. images/pins/big/snorkeling.png +0 -0
  190. images/pins/big/snowboarding.png +0 -0
  191. images/pins/big/snowflake.png +0 -0
  192. images/pins/big/snowmobiling.png +0 -0
  193. images/pins/big/snowpark_arc.png +0 -0
  194. images/pins/big/snowshoeing.png +0 -0
  195. images/pins/big/soccer.png +0 -0
  196. images/pins/big/spaceport.png +0 -0
  197. images/pins/big/spelunking.png +0 -0
  198. images/pins/big/sport_utility_vehicle.png +0 -0
  199. images/pins/big/sportscar.png +0 -0
  200. images/pins/big/squash.png +0 -0
  201. images/pins/big/squirrel.png +0 -0
  202. images/pins/big/stadium.png +0 -0
  203. images/pins/big/strip_club.png +0 -0
  204. images/pins/big/subway.png +0 -0
  205. images/pins/big/summercamp.png +0 -0
  206. images/pins/big/sumo.png +0 -0
  207. images/pins/big/surfacelift.png +0 -0
  208. images/pins/big/surfing.png +0 -0
  209. images/pins/big/takeaway.png +0 -0
  210. images/pins/big/tea.png +0 -0
  211. images/pins/big/teble_tennis.png +0 -0
  212. images/pins/big/television.png +0 -0
  213. images/pins/big/temple_hindu.png +0 -0
  214. images/pins/big/tennis.png +0 -0
  215. images/pins/big/terrace.png +0 -0
  216. images/pins/big/textiles.png +0 -0
  217. images/pins/big/the_ravada_pagoda.png +0 -0
  218. images/pins/big/theater.png +0 -0
  219. images/pins/big/theft.png +0 -0
  220. images/pins/big/themepark.png +0 -0
  221. images/pins/big/therapy.png +0 -0
  222. images/pins/big/thermometer.png +0 -0
  223. images/pins/big/ticket.png +0 -0
  224. images/pins/big/tiger.png +0 -0
  225. images/pins/big/toll_station.png +0 -0
  226. images/pins/big/tools.png +0 -0
  227. images/pins/big/toys.png +0 -0
  228. images/pins/big/traffic_camera.png +0 -0
  229. images/pins/big/tree_down.png +0 -0
  230. images/pins/big/trolley.png +0 -0
  231. images/pins/big/tunnel.png +0 -0
  232. images/pins/big/turtle.png +0 -0
  233. images/pins/big/tweet.png +0 -0
  234. images/pins/big/van.png +0 -0
  235. images/pins/big/vespa.png +0 -0
  236. images/pins/big/video_games.png +0 -0
  237. images/pins/big/villa.png +0 -0
  238. images/pins/big/vineyard.png +0 -0
  239. images/pins/big/volleyball.png +0 -0
  240. images/pins/big/waiting.png +0 -0
  241. images/pins/big/walkingtour.png +0 -0
  242. images/pins/big/war.png +0 -0
  243. images/pins/big/warehouse.png +0 -0
  244. images/pins/big/water_pump.png +0 -0
  245. images/pins/big/water_temperature.png +0 -0
  246. images/pins/big/watercraft.png +0 -0
  247. images/pins/big/waterfall.png +0 -0
  248. images/pins/big/watermill.png +0 -0
  249. images/pins/big/waterskiing.png +0 -0
  250. images/pins/big/wedding.png +0 -0
  251. images/pins/big/weights.png +0 -0
  252. images/pins/big/wetlands.png +0 -0
  253. images/pins/big/whale.png +0 -0
  254. images/pins/big/wifi.png +0 -0
  255. images/pins/big/windmill.png +0 -0
  256. images/pins/big/wine_tasting.png +0 -0
  257. images/pins/big/woodshed.png +0 -0
  258. images/pins/big/work_office.png +0 -0
  259. images/pins/big/worldwideweb.png +0 -0
  260. images/pins/big/wrestling.png +0 -0
  261. images/pins/big/yin_yang.png +0 -0
  262. images/pins/big/yoga.png +0 -0
  263. images/pins/big/yooner.png +0 -0
  264. images/pins/big/youth_hostel.png +0 -0
  265. images/pins/big/zombie.png +0 -0
  266. js/gmw-admin.js +93 -11
  267. readme.txt +8 -2
css/gmw-admin.css CHANGED
@@ -153,7 +153,7 @@ body.widgets-php .select2-container--default .select2-results__option[aria-disab
153
 
154
  .gmw-dialog .footer {
155
  padding: 20px 135px;
156
- background-color: #303030;
157
  color: #333;
158
  }
159
 
@@ -200,7 +200,7 @@ body.widgets-php .select2-container--default .select2-results__option[aria-disab
200
  display: block;
201
  }
202
 
203
- .gmw-dialog h3 b {
204
  color: #fe4765;
205
  }
206
 
@@ -233,7 +233,7 @@ body.widgets-php .select2-container--default .select2-results__option[aria-disab
233
  #gmw_promo_dialog ul {
234
  list-style-position: inside;
235
  list-style-type: disc;
236
- padding-bottom: 15px;
237
  }
238
 
239
  .gmw-dialog input {
@@ -242,9 +242,9 @@ body.widgets-php .select2-container--default .select2-results__option[aria-disab
242
  }
243
 
244
  .gmw-dialog input.error {
245
- border-color: rgb(225, 77, 67) !important;
246
- outline-color: rgb(225, 77, 67) !important;
247
- -webkit-box-shadow: rgba(225, 77, 67, 0.8) 0px 0px 2px 0px !important;
248
  }
249
 
250
  .gmw-dialog .input_row {
@@ -274,7 +274,7 @@ body.widgets-php .select2-container--default .select2-results__option[aria-disab
274
  background-size: 20px 20px;
275
  }
276
 
277
- a.button.button-secondary.gmw_spinner {
278
  background: url(../images/spinner.gif) no-repeat center center;
279
  -webkit-background-size: 20px 20px;
280
  background-size: 20px 20px;
@@ -288,10 +288,28 @@ a.button.button-secondary.gmw_spinner {
288
 
289
  #gmw_promo_dialog .center {
290
  text-align: center;
 
291
  }
292
 
293
- #gmw_dialog_activate {
294
- display: none;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
295
  }
296
 
297
 
@@ -305,7 +323,7 @@ a.button.button-secondary.gmw_spinner {
305
  margin-top: 5px;
306
  }
307
 
308
- input:required:invalid {
309
  -moz-box-shadow: none;
310
  box-shadow: none;
311
  border-color: #D54E21;
@@ -468,7 +486,6 @@ ul.ui-tabs-nav{
468
  .gmw-content-box h3 {
469
  font-size: 26px;
470
  font-weight: bold;
471
- text-transform: uppercase;
472
  }
473
 
474
  .gmw-content-box h3,
@@ -562,7 +579,7 @@ ul.ui-tabs-nav{
562
  font-weight: bold;
563
  text-transform: uppercase;
564
  font-size: 14px;
565
- padding: 15px 40px;
566
  text-shadow:none !important;
567
  height: auto !important;
568
  }
@@ -595,7 +612,7 @@ ul.ui-tabs-nav{
595
  box-shadow: none !important;
596
  border-radius: 4px;
597
  background: #fff;
598
- color: #666;
599
  font-weight: bold;
600
  text-transform: uppercase;
601
  font-size: 12px;
@@ -604,7 +621,6 @@ ul.ui-tabs-nav{
604
  height: auto !important;
605
  margin-left: 20px;
606
  margin-top: 20px;
607
- display: none;
608
  }
609
 
610
  .gmw_goto_trial.button-secondary:hover {
@@ -618,10 +634,9 @@ ul.ui-tabs-nav{
618
 
619
  .gmw-footer-intro {
620
  display: block;
621
- padding: 25px 0px;
622
  text-align: center;
623
  margin: 0px !important;
624
- font-size: 14px;
625
  }
626
 
627
  .gmw-footer-intro a {
@@ -631,11 +646,13 @@ ul.ui-tabs-nav{
631
 
632
  /* Donate */
633
  #gmw_dialog_activate .content {
634
- padding: 60px 130px;
 
 
635
  }
636
 
637
- #gmw_dialog_activate .content a {
638
- color: #0085ba;
639
  }
640
 
641
  #gmw_code {
@@ -649,7 +666,6 @@ ul.ui-tabs-nav{
649
 
650
  #gmw_activate {
651
  display: block;
652
- border: 1px solid #fff;
653
  border-radius:4px;
654
  background-color: #0085ba;
655
  color: #fff !important;
@@ -668,23 +684,30 @@ ul.ui-tabs-nav{
668
  }
669
 
670
  .gmw-faq-ul li {
671
- color: #888888 !important;
 
 
 
 
672
  }
673
 
674
- /* Subscribe */
675
- #gmw_dialog_subscribe .content {
676
- padding: 40px 130px;
 
 
677
  }
678
 
679
  #gmw_dialog_subscribe .content a {
680
  color: #0085ba;
681
  }
682
 
683
- #gmw_dialog_subscribe h3 {
684
  text-align: center;
 
685
  }
686
 
687
- #gmw_dialog_subscribe input[type="text"] {
688
  border: 1px solid #dcdcdc;
689
  box-shadow:none;
690
  padding: 25px !important;
@@ -693,9 +716,12 @@ ul.ui-tabs-nav{
693
  border-radius:3px;
694
  }
695
 
696
- #gmw_dialog_subscribe .button.button-primary {
 
 
 
 
697
  display: block;
698
- border: 1px solid #fff;
699
  border-radius:4px;
700
  background: #0085ba;
701
  color: #fff !important;
@@ -708,12 +734,16 @@ ul.ui-tabs-nav{
708
  box-shadow: none !important;
709
  }
710
 
711
- #gmw_dialog_subscribe .button.button-primary:hover {
712
  background: #00719e !important;
713
  }
714
 
715
- #gmw_dialog_subscribe .footer {
716
- background:#0085ba;
 
 
 
 
717
  }
718
 
719
 
@@ -840,7 +870,7 @@ ul.ui-tabs-nav{
840
  box-shadow: none !important;
841
  border-radius: 4px;
842
  background: #f5f5f5;
843
- color: #d54e21;
844
  font-weight: bold;
845
  text-transform: uppercase;
846
  font-size: 12px;
@@ -852,4 +882,138 @@ ul.ui-tabs-nav{
852
 
853
  .gmw_goto_intro.button-secondary:hover {
854
  background: rgba(0,0,0,0.15);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
855
  }
153
 
154
  .gmw-dialog .footer {
155
  padding: 20px 135px;
156
+ background-color: #5fb5d8;
157
  color: #333;
158
  }
159
 
200
  display: block;
201
  }
202
 
203
+ .xgmw-dialog h3 b {
204
  color: #fe4765;
205
  }
206
 
233
  #gmw_promo_dialog ul {
234
  list-style-position: inside;
235
  list-style-type: disc;
236
+ padding: 15px 0;
237
  }
238
 
239
  .gmw-dialog input {
242
  }
243
 
244
  .gmw-dialog input.error {
245
+ -moz-box-shadow: none;
246
+ box-shadow: none;
247
+ border-color: #D54E21 !important;
248
  }
249
 
250
  .gmw-dialog .input_row {
274
  background-size: 20px 20px;
275
  }
276
 
277
+ a.button.button-secondary.gmw_spinner, a.button.button-primary.gmw_spinner {
278
  background: url(../images/spinner.gif) no-repeat center center;
279
  -webkit-background-size: 20px 20px;
280
  background-size: 20px 20px;
288
 
289
  #gmw_promo_dialog .center {
290
  text-align: center;
291
+ color: #fff;
292
  }
293
 
294
+ #gmw_promo_dialog .footer .center {
295
+ text-align: center;
296
+ color: #333;
297
+ }
298
+
299
+ #gmw_promo_dialog .center a, #gmw_promo_dialog .center a:visited {
300
+ color: #fff;
301
+ }
302
+
303
+ #gmw_promo_dialog .footer .center a, #gmw_promo_dialog .footer .center a:visited {
304
+ color: #0073aa;
305
+ }
306
+
307
+ #gmw_promo_dialog .footer .center a:hover {
308
+ color: #00a0d2;
309
+ }
310
+
311
+ #gmw_dialog_activate .footer {
312
+ padding: 20px 135px 60px 135px;
313
  }
314
 
315
 
323
  margin-top: 5px;
324
  }
325
 
326
+ input:required:invalid, #gmw_promo_dialog input:required:invalid {
327
  -moz-box-shadow: none;
328
  box-shadow: none;
329
  border-color: #D54E21;
486
  .gmw-content-box h3 {
487
  font-size: 26px;
488
  font-weight: bold;
 
489
  }
490
 
491
  .gmw-content-box h3,
579
  font-weight: bold;
580
  text-transform: uppercase;
581
  font-size: 14px;
582
+ padding: 15px 0;
583
  text-shadow:none !important;
584
  height: auto !important;
585
  }
612
  box-shadow: none !important;
613
  border-radius: 4px;
614
  background: #fff;
615
+ color: #666 !important;
616
  font-weight: bold;
617
  text-transform: uppercase;
618
  font-size: 12px;
621
  height: auto !important;
622
  margin-left: 20px;
623
  margin-top: 20px;
 
624
  }
625
 
626
  .gmw_goto_trial.button-secondary:hover {
634
 
635
  .gmw-footer-intro {
636
  display: block;
637
+ padding: 30px 0px;
638
  text-align: center;
639
  margin: 0px !important;
 
640
  }
641
 
642
  .gmw-footer-intro a {
646
 
647
  /* Donate */
648
  #gmw_dialog_activate .content {
649
+ padding: 60px 130px 20px 130px;
650
+ background-color: #5fb5d8;
651
+ border: 1px solid #5fb5d8;
652
  }
653
 
654
+ #gmw_dialog_activate .content a, #gmw_dialog_activate .content a:visited {
655
+ color: #fff;
656
  }
657
 
658
  #gmw_code {
666
 
667
  #gmw_activate {
668
  display: block;
 
669
  border-radius:4px;
670
  background-color: #0085ba;
671
  color: #fff !important;
684
  }
685
 
686
  .gmw-faq-ul li {
687
+ color: #fff !important;
688
+ }
689
+
690
+ .gmw-faq-ul li a, .gmw-faq-ul li a:visited {
691
+ color: #fff !important;
692
  }
693
 
694
+ /* Trial */
695
+ #gmw_dialog_trial .content {
696
+ padding: 40px 130px 15px 130px;
697
+ background-color: #5fb5d8;
698
+ border: 1px solid #5fb5d8;
699
  }
700
 
701
  #gmw_dialog_subscribe .content a {
702
  color: #0085ba;
703
  }
704
 
705
+ #gmw_dialog_trial h3 {
706
  text-align: center;
707
+ color: #fff;
708
  }
709
 
710
+ #gmw_dialog_trial input[type="text"] {
711
  border: 1px solid #dcdcdc;
712
  box-shadow:none;
713
  padding: 25px !important;
716
  border-radius:3px;
717
  }
718
 
719
+ #gmw_promo_dialog input[type="text"]:focus {
720
+ border: 1px solid #5b9dd9;
721
+ }
722
+
723
+ #gmw_dialog_trial .button.button-primary {
724
  display: block;
 
725
  border-radius:4px;
726
  background: #0085ba;
727
  color: #fff !important;
734
  box-shadow: none !important;
735
  }
736
 
737
+ #gmw_dialog_trial .button.button-primary:hover {
738
  background: #00719e !important;
739
  }
740
 
741
+ #gmw_dialog_subscribe .footer, #gmw_dialog_trial .footer {
742
+ background: #5fb5d8;
743
+ }
744
+
745
+ #gmw_dialog_trial .footer {
746
+ padding: 15px 135px 50px 135px;
747
  }
748
 
749
 
870
  box-shadow: none !important;
871
  border-radius: 4px;
872
  background: #f5f5f5;
873
+ color: #d54e21 !important;
874
  font-weight: bold;
875
  text-transform: uppercase;
876
  font-size: 12px;
882
 
883
  .gmw_goto_intro.button-secondary:hover {
884
  background: rgba(0,0,0,0.15);
885
+ color: #999 !important;
886
+ }
887
+
888
+ .gmw-promo-box {
889
+ padding: 28px 40px;
890
+ height: 70px;
891
+ }
892
+
893
+ .gmw-promo-box * {
894
+ opacity: 0.85;
895
+ filter: alpha(opacity = 85);
896
+ }
897
+
898
+ .gmw-promo-box:hover {
899
+ cursor: pointer;
900
+ }
901
+
902
+ .gmw-promo-box-hover * {
903
+ opacity: 1;
904
+ filter: alpha(opacity = 100);
905
+ }
906
+
907
+ .gmw-promo-icon {
908
+ display: inline-block;
909
+ width: 67px;
910
+ text-align: center;
911
+ vertical-align: bottom;
912
+ }
913
+
914
+ .gmw-promo-button {
915
+ border: 2px solid #fff;
916
+ border-radius: 10px;
917
+ display: inline-block;
918
+ font-weight: bold;
919
+ font-size: 22px;
920
+ width: 140px;
921
+ text-align: center;
922
+ color: #fff;
923
+ position: absolute;
924
+ right: 40px;
925
+ text-transform: uppercase;
926
+ margin-top: 4px;
927
+ }
928
+
929
+ .gmw-promo-button a {
930
+ color: white;
931
+ padding: 20px 0;
932
+ display: inline-block;
933
+ text-decoration: none;
934
+ }
935
+
936
+ .gmw-promo-button-extra a {
937
+ padding: 15px 0;
938
+ }
939
+
940
+ .gmw-promo-button-extra {
941
+ margin-top: -5px;
942
+ }
943
+
944
+ .gmw-promo-button span {
945
+ color: white;
946
+ padding: 5px 0;
947
+ display: inline-block;
948
+ text-decoration: none;
949
+ font-size: 13px;
950
+ background-color: #fff;
951
+ color: #1fbc61;
952
+ width: 100%;
953
+ border-bottom-left-radius: 8px;
954
+ border-bottom-right-radius: 10px;
955
+ border: 1px solid #fff;
956
+ }
957
+
958
+ .gmw-promo-description {
959
+ display: inline-block;
960
+ padding: 0 0 0 30px;
961
+ vertical-align: top;
962
+ }
963
+
964
+ .gmw-promo-description h3 {
965
+ font-size: 24px;
966
+ font-weight: bold;
967
+ display: inline-block;
968
+ color: #fff;
969
+ margin: 0;
970
+ padding: 0;
971
+ }
972
+
973
+ .gmw-promo-description span {
974
+ font-size: 14.5px;
975
+ display: inline-block;
976
+ color: #fff;
977
+ }
978
+
979
+ .gmw-promo-box-lifetime {
980
+ background-color: #1fbc61;
981
+ }
982
+
983
+ .gmw-promo-box-yearly {
984
+ background-color: #0085ba;
985
+ }
986
+
987
+ .gmw-promo-box-yearly .gmw-promo-button {
988
+ text-transform: none;
989
+ }
990
+
991
+ .gmw-promo-box-trial {
992
+ background-color: #5fb5d8;
993
+ }
994
+
995
+ #gmw_dialog_intro .header {
996
+ padding: 30px 95px;
997
+ color: #666;
998
+ text-align: center;
999
+ font-size: 15px;
1000
+ }
1001
+
1002
+ #gmw_dialog_intro .header p {
1003
+ margin: 0;
1004
+ }
1005
+
1006
+ .gmw-discount {
1007
+ padding: 16px 20px;
1008
+ text-align: center;
1009
+ background-color: #f4fcf7;
1010
+ color: #1fbc61;
1011
+ border: 1px solid #1fbc61;
1012
+ border-radius: 10px;
1013
+ margin-top: 25px;
1014
+ font-size: 15px;
1015
+ }
1016
+
1017
+ #gmw_dialog_pro_features .footer .button-secondary {
1018
+ min-width: 165px;
1019
  }
gmw-widget.php CHANGED
@@ -519,8 +519,7 @@ class GoogleMapsWidget extends WP_Widget {
519
  echo '</p>';
520
 
521
  echo '<h4>' . __('License', 'google-maps-widget') . '</h4>';
522
- echo '<p>Your <span class="gmw-pro-red">PRO</span> license is active and valid ' . ($options['license_expires'] == '2035-01-01'? 'indefinitely': 'until ' . date(get_option('date_format'), strtotime($options['license_expires']))) . '. ';
523
- echo 'Additional info is available in <a href="' . admin_url('options-general.php?page=gmw_options') . '" title="Settings">settings</a>.</p>';
524
  } else {
525
  echo '<h4>' . __('Support', 'google-maps-widget') . '</h4>';
526
  echo '<p>If you have any problems, questions or would like a new feature added post it on the <a href="https://wordpress.org/support/plugin/google-maps-widget" target="_blank">official support forum</a>. It\'s the only place to get support. Since it\'s free and community powered please be patient.<br>';
519
  echo '</p>';
520
 
521
  echo '<h4>' . __('License', 'google-maps-widget') . '</h4>';
522
+ echo '<p>Your license is active and valid. Additional info is available in <a href="' . admin_url('options-general.php?page=gmw_options') . '" title="Settings">settings</a>.</p>';
 
523
  } else {
524
  echo '<h4>' . __('Support', 'google-maps-widget') . '</h4>';
525
  echo '<p>If you have any problems, questions or would like a new feature added post it on the <a href="https://wordpress.org/support/plugin/google-maps-widget" target="_blank">official support forum</a>. It\'s the only place to get support. Since it\'s free and community powered please be patient.<br>';
google-maps-widget.php CHANGED
@@ -4,7 +4,7 @@ Plugin Name: Google Maps Widget
4
  Plugin URI: http://www.gmapswidget.com/
5
  Description: Display a single-image super-fast loading Google map in a widget. A larger, full featured map is available as an image replacement or in a lightbox. Includes shortcode support and numerous options.
6
  Author: Web factory Ltd
7
- Version: 3.20
8
  Author URI: http://www.webfactoryltd.com/
9
  Text Domain: google-maps-widget
10
  Domain Path: lang
@@ -34,7 +34,8 @@ if (!defined('ABSPATH')) {
34
 
35
  if (!class_exists('GMW')) :
36
 
37
- define('GMW_PLUGIN_DIR', plugin_dir_path( __FILE__ ));
 
38
 
39
  require_once GMW_PLUGIN_DIR . 'gmw-tracking.php';
40
  require_once GMW_PLUGIN_DIR . 'gmw-widget.php';
@@ -46,8 +47,9 @@ if (file_exists(GMW_PLUGIN_DIR . 'gmw-pro-license.php')) {
46
 
47
 
48
  class GMW {
49
- static $version = '3.20';
50
  static $options = 'gmw_options';
 
51
 
52
 
53
  // hook everything up
@@ -76,6 +78,7 @@ class GMW {
76
  // register AJAX endpoints
77
  add_action('wp_ajax_gmw_activate', array('GMW', 'activate_license_key_ajax'));
78
  add_action('wp_ajax_gmw_test_api_key', array('GMW', 'test_api_key_ajax'));
 
79
 
80
  // custom admin actions
81
  add_action('admin_action_gmw_dismiss_notice', array('GMW', 'dismiss_notice'));
@@ -598,13 +601,13 @@ class GMW {
598
 
599
  // license expire notice is always shown
600
  if ((!$notice && GMW::is_activated() && empty($options['dismiss_notice_license_expires']) &&
601
- (strtotime($options['license_expires']) - time() < DAY_IN_SECONDS * 15)) ||
602
  (!$notice && empty($options['dismiss_notice_license_expires']) &&
603
  $options['license_expires'] < date('Y-m-d') && $options['license_active'] == true)) {
604
  add_action('admin_notices', array('GMW', 'notice_license_expires'));
605
  $notice = true;
606
  } elseif ((!$notice && GMW::is_activated() && GMW::is_plugin_admin_page('settings') &&
607
- (strtotime($options['license_expires']) - time() < DAY_IN_SECONDS * 15)) ||
608
  (!$notice && GMW::is_plugin_admin_page('settings') &&
609
  $options['license_expires'] < date('Y-m-d') && $options['license_active'] == true)) {
610
  add_action('admin_notices', array('GMW', 'notice_license_expires'));
@@ -617,9 +620,9 @@ class GMW {
617
  $notice = true;
618
  } // show api key notice
619
 
620
- // upgrade notice is shown after one day
621
  if (!$notice && empty($options['dismiss_notice_upgrade2']) && !GMW::is_activated() &&
622
- (current_time('timestamp') - $options['first_install']) > (DAY_IN_SECONDS)) {
623
  add_action('admin_notices', array('GMW', 'notice_upgrade'));
624
  $notice = true;
625
  } // show upgrade notice
@@ -647,26 +650,34 @@ class GMW {
647
 
648
  $buy_url = admin_url('options-general.php?page=gmw_options&gmw_open_promo_dialog');
649
  $dismiss_url = add_query_arg(array('action' => 'gmw_dismiss_notice', 'notice' => 'license_expires', 'redirect' => urlencode($_SERVER['REQUEST_URI'])), admin_url('admin.php'));
650
- $days = strtotime($options['license_expires']) - time();
 
651
  $days = round($days / DAY_IN_SECONDS);
652
 
653
  echo '<div id="gmw_license_expires_notice" class="error notice"><p>';
654
- echo 'Your <b>Google Maps Widget</b> <b style="color: #d54e21;">PRO</b> license ';
655
- if ($days > 1) {
656
- echo '<b>expires in ' . $days . ' days</b>!';
657
- } elseif ($days == 0) {
658
  echo '<b>expires today</b>!';
 
 
 
 
 
 
 
 
 
 
 
 
 
659
  } else {
660
  echo '<b>has expired</b>!';
661
- }
662
- echo ' <a href="' . esc_url($buy_url) . '">Renew now</a> and for a limited time pay only as much as <b>you think is fair</b>!<br>';
663
- if ($days >= 0) {
664
- echo 'All <b style="color: #d54e21;">PRO</b> features will be disabled once the license expires.';
665
- } else {
666
- echo 'All <b style="color: #d54e21;">PRO</b> features have been disabled.';
667
  }
668
 
669
- echo '<br><a href="' . esc_url($buy_url) . '" style="vertical-align: baseline; margin-top: 15px;" class="button-primary">' . __('Pay what you think is fair', 'google-maps-widget') . '</a>';
670
  if (!GMW::is_plugin_admin_page('settings')) {
671
  echo '&nbsp;&nbsp;<a href="' . esc_url($dismiss_url) . '" class="">' . __('I will pay the full price ($29) later', 'google-maps-widget') . '</a>';
672
  }
@@ -679,10 +690,10 @@ class GMW {
679
  $activate_url = admin_url('options-general.php?page=gmw_options&gmw_open_promo_dialog');
680
  $dismiss_url = add_query_arg(array('action' => 'gmw_dismiss_notice', 'notice' => 'upgrade', 'redirect' => urlencode($_SERVER['REQUEST_URI'])), admin_url('admin.php'));
681
 
682
- echo '<div id="gmw_activate_notice" class="updated notice"><p>' . __('<b>Google Maps Widget</b> has more than 50 <b style="color: #d54e21;">PRO</b> features. Check them out and grab the limited time offer! Act now!', 'google-maps-widget');
683
 
684
  echo '<br><a href="' . esc_url($activate_url) . '" style="vertical-align: baseline; margin-top: 15px;" class="button-primary">' . __('Activate PRO features', 'google-maps-widget') . '</a>';
685
- echo '&nbsp;&nbsp;<a href="' . esc_url($dismiss_url) . '" class="">' . __('I will pay more later', 'google-maps-widget') . '</a>';
686
  echo '</p></div>';
687
  } // notice_activate_extra_features
688
 
@@ -747,7 +758,9 @@ class GMW {
747
  wp_enqueue_script('wp-color-picker');
748
  wp_enqueue_script('wp-pointer');
749
  wp_enqueue_script('gmw-cookie', plugins_url('js/jquery.cookie.js', __FILE__), array('jquery'), GMW::$version, true);
750
- wp_enqueue_script('gmw-gmap', '//maps.google.com/maps/api/js', array(), GMW::$version, true);
 
 
751
  wp_enqueue_script('gmw-select2', plugins_url('js/select2.min.js', __FILE__), array('jquery'), GMW::$version, true);
752
  wp_enqueue_script('gmw-admin', plugins_url('js/gmw-admin.js', __FILE__), array('jquery'), GMW::$version, true);
753
 
@@ -768,10 +781,13 @@ class GMW {
768
  'map_picker_not_active' => __('Drag&drop address picking interface is a PRO feature. Interested in switching to PRO?', 'google-maps-widget'),
769
  'map' => false,
770
  'marker' => false,
 
 
771
  'pins_library' => plugins_url('/images/pins/', __FILE__),
772
  'disable_tooltips' => $options['disable_tooltips'],
773
  'is_activated' => GMW::is_activated(),
774
  'nonce_test_api_key' => wp_create_nonce('gmw_test_api_key'),
 
775
  'nonce_activate_license_key' => wp_create_nonce('gmw_activate_license_key'));
776
  wp_localize_script('gmw-admin', 'gmw', $js_localize);
777
  } // if
@@ -834,46 +850,61 @@ class GMW {
834
  // echo markup for promo dialog; only on widgets page
835
  static function admin_dialogs_markup() {
836
  $out = '';
 
 
837
 
838
  if ((GMW::is_plugin_admin_page('widgets') || GMW::is_plugin_admin_page('settings'))) {
 
 
 
 
 
 
 
839
  $out .= '<div id="gmw_promo_dialog" style="display: none;">';
840
 
841
  $out .= '<div id="gmw_dialog_intro" class="gmw_promo_dialog_screen">
842
  <div class="content">
843
- <div class="center boxed-h">Not sure if it\'s worth it? See everything <span class="gmw-pro-red">PRO</span> has to offer.<br><a href="#" class="button-secondary gmw_goto_pro">See PRO features</a> <a href="#" class="button-secondary gmw_goto_trial">Start a free trial</a></div>';
844
- $out .= '<div class="gmw-left-box gmw-content-box">
845
- <h3>Buy PRO</h3>
846
- <p><strike><i>$29</i></strike> $19 for unlimited sites</p>
847
- <i class="dashicons dashicons-star-filled"></i>
848
- <ul>
849
- <li>One-time fee - lifetime license</li>
850
- <li>Premium email support for 1 year</li>
851
- <li>Access to all PRO features</li>
852
- <li>Export &amp; import feature</li>
853
- <li style="display: none;">Extra skins and icons</li>
854
- </ul>
855
- <a href="http://www.gmapswidget.com/buy/?p=pro&r=GMW+v' . GMW::$version . '" data-noprevent="1" class="gmw_goto_activation button-primary" target="_blank">BUY NOW</a>
 
 
 
 
 
 
 
 
 
 
 
 
 
856
  </div>';
857
- $out .= '<div class="gmw-right-box gmw-content-box gmw-content-box-alternate">
858
- <h3>Donate</h3>
859
- <p>as much as you thinks is fair</p>
860
- <i class="dashicons dashicons-heart"></i>
861
- <ul>
862
- <li>One-time fee - lifetime license</li>
863
- <li>Priority community based support</li>
864
- <li>Access to PRO features</li>
865
- <li class="gmw-not-available">Export &amp; import feature</li>
866
- <li style="display: none;" class="gmw-not-available">Extra skins and icons</li>
867
- </ul>
868
- <a href="http://www.gmapswidget.com/buy/?p=donate&r=GMW+v' . GMW::$version . '" data-noprevent="1" class="gmw_goto_activation button-secondary" target="_blank">Donate</a>
869
  </div>';
870
- $out .= '<p class="clear center gmw-footer-intro">Already have a license key? <a href="#" class="gmw_goto_activation">Enter it here</a></p>';
871
  $out .= '</div></div>'; // dialog intro
872
 
873
  $out .= '<div id="gmw_dialog_activate" style="display: none;" class="gmw_promo_dialog_screen">
874
  <div class="content">';
875
  $out .= '<p class="input_row">
876
- <input type="text" id="gmw_code" name="gmw_code" placeholder="Please enter the license key.">
877
  <span style="display: none;" class="error gmw_code">Unable to verify license key. Unknown error.</span></p>
878
  <p class="center">
879
  <a href="#" class="button button-primary" id="gmw_activate">Activate PRO features</a>
@@ -881,21 +912,19 @@ class GMW {
881
  <p class="center">If you don\'t have a license key - <a href="#" class="gmw_goto_intro">Get it now</a></p>
882
  </div>';
883
  $out .= '<div class="footer">
884
- <p><b>FAQ</b></p>
885
  <ul class="gmw-faq-ul">
886
- <li>Payed or donated and didn\'t received the key? <a href="mailto:gmw@webfactoryltd.com?subject=Activation%20key%20problem">Email us</a></li>
887
  <li>Key not working? Our <a href="mailto:gmw@webfactoryltd.com?subject=Activation%20key%20problem">support</a> is here to help</li>
888
- <li>Your key is valid for an unlimited number of sites</li>
889
  </ul>
890
  </div>';
891
  $out .= '</div>'; // activate screen
892
 
893
  $out .= '<div id="gmw_dialog_pro_features" style="display: none;" class="gmw_promo_dialog_screen">
894
  <div class="content">';
895
- $out .= '<h4>Detailed description of <span class="gmw-pro-red">PRO</span> features</h4>';
896
  $out .= '<ul class="list-left">';
897
  $out .= '<li>11 thumbnail map skins</li>
898
- <li>700+ thumbnail map pins</li>
899
  <li>4 extra map image formats for even faster loading</li>
900
  <li>replace thumb with interactive map feature</li>
901
  <li>extra hidden sidebar for easier shortcode handling</li>
@@ -917,7 +946,7 @@ class GMW {
917
  <li>Google Analytics integration</li>
918
  <li>no ads</li>
919
  <li>no promo emails</li>
920
- <li>premium support</li>';
921
  $out .= '</ul>';
922
  $out .= ' </div>';
923
  $out .= '<div class="footer">';
@@ -927,8 +956,27 @@ class GMW {
927
  $out .= '</div>'; // pro features screen
928
 
929
  $out .= '<div id="gmw_dialog_trial" style="display: none;" class="gmw_promo_dialog_screen">
930
- <div class="content">test';
931
- $out .= '</div>';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
932
  $out .= '</div>'; // trial screen
933
 
934
  $out .= '</div>'; // dialog
@@ -1063,7 +1111,7 @@ class GMW {
1063
  echo '</div>'; // settings tab
1064
 
1065
  echo '<div id="gmw-export" style="display: none;">';
1066
- if (GMW::is_activated('pro')) {
1067
  echo '<table class="form-table">';
1068
  echo '<tr>
1069
  <th scope="row"><label for="">' . __('Export widgets', 'google-maps-widget') . '</label></th>
@@ -1094,11 +1142,24 @@ class GMW {
1094
  <p class="description">License key can be found in the confirmation email you received after purchasing.</p></td>
1095
  </tr>';
1096
  if (GMW::is_activated()) {
 
 
 
 
 
 
 
 
 
 
 
 
 
1097
  echo '<tr>
1098
  <th scope="row"><label for="">' . __('License Key Status', 'google-maps-widget') . '</label></th>
1099
  <td><b style="color: green">Active</b><br>
1100
- Type: ' . $options['license_type'] . '<br>
1101
- Valid ' . ($options['license_expires'] == '2035-01-01'? 'indefinitely': 'until ' . date(get_option('date_format'), strtotime($options['license_expires']))) . '</td>
1102
  </tr>';
1103
  } else {
1104
  echo '<tr>
@@ -1113,6 +1174,47 @@ class GMW {
1113
  echo '</form>';
1114
  echo '</div>'; // wrap
1115
  } // settings_screen
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1116
 
1117
 
1118
  // check activation code and save if valid
@@ -1140,21 +1242,21 @@ class GMW {
1140
  // check if activation code is valid
1141
  static function validate_activation_code($code) {
1142
  $request_params = array('sslverify' => false, 'timeout' => 7, 'redirection' => 2);
1143
- $request_args = array('code' => $code, 'domain' => get_home_url());
1144
 
1145
  $out = array('success' => false, 'license_active' => false, 'activation_code' => $code, 'error' => '', 'license_type' => '', 'license_expires' => '1900-01-01');
1146
 
1147
- $url = add_query_arg($request_args, 'http://license.gmapswidget.com/');
1148
  $response = wp_remote_get(esc_url_raw($url), $request_params);
1149
 
1150
  if (is_wp_error($response) || !wp_remote_retrieve_body($response)) {
1151
- $url = add_query_arg($request_args, 'http://license2.gmapswidget.com/');
1152
  $response = wp_remote_get(esc_url_raw($url), $request_params);
1153
  }
1154
 
1155
  if (!is_wp_error($response) && wp_remote_retrieve_body($response)) {
1156
  $result = wp_remote_retrieve_body($response);
1157
- $result = @json_decode($result, true);
1158
  if (is_array($result['data']) && sizeof($result['data']) == 4) {
1159
  $out['success'] = true;
1160
  $out = array_merge($out, $result['data']);
4
  Plugin URI: http://www.gmapswidget.com/
5
  Description: Display a single-image super-fast loading Google map in a widget. A larger, full featured map is available as an image replacement or in a lightbox. Includes shortcode support and numerous options.
6
  Author: Web factory Ltd
7
+ Version: 3.25
8
  Author URI: http://www.webfactoryltd.com/
9
  Text Domain: google-maps-widget
10
  Domain Path: lang
34
 
35
  if (!class_exists('GMW')) :
36
 
37
+ define('GMW_PLUGIN_DIR', plugin_dir_path(__FILE__));
38
+ define('GMW_PLUGIN_URL', plugin_dir_url(__FILE__));
39
 
40
  require_once GMW_PLUGIN_DIR . 'gmw-tracking.php';
41
  require_once GMW_PLUGIN_DIR . 'gmw-widget.php';
47
 
48
 
49
  class GMW {
50
+ static $version = '3.25';
51
  static $options = 'gmw_options';
52
+ static $licensing_servers = array('http://license.gmapswidget.com/', 'http://license2.gmapswidget.com/');
53
 
54
 
55
  // hook everything up
78
  // register AJAX endpoints
79
  add_action('wp_ajax_gmw_activate', array('GMW', 'activate_license_key_ajax'));
80
  add_action('wp_ajax_gmw_test_api_key', array('GMW', 'test_api_key_ajax'));
81
+ add_action('wp_ajax_gmw_get_trial', array('GMW', 'get_trial_ajax'));
82
 
83
  // custom admin actions
84
  add_action('admin_action_gmw_dismiss_notice', array('GMW', 'dismiss_notice'));
601
 
602
  // license expire notice is always shown
603
  if ((!$notice && GMW::is_activated() && empty($options['dismiss_notice_license_expires']) &&
604
+ (strtotime($options['license_expires']) - time() < DAY_IN_SECONDS * 3)) ||
605
  (!$notice && empty($options['dismiss_notice_license_expires']) &&
606
  $options['license_expires'] < date('Y-m-d') && $options['license_active'] == true)) {
607
  add_action('admin_notices', array('GMW', 'notice_license_expires'));
608
  $notice = true;
609
  } elseif ((!$notice && GMW::is_activated() && GMW::is_plugin_admin_page('settings') &&
610
+ (strtotime($options['license_expires']) - time() < DAY_IN_SECONDS * 3)) ||
611
  (!$notice && GMW::is_plugin_admin_page('settings') &&
612
  $options['license_expires'] < date('Y-m-d') && $options['license_active'] == true)) {
613
  add_action('admin_notices', array('GMW', 'notice_license_expires'));
620
  $notice = true;
621
  } // show api key notice
622
 
623
+ // upgrade notice is shown after one day; temporarily disabled
624
  if (!$notice && empty($options['dismiss_notice_upgrade2']) && !GMW::is_activated() &&
625
+ (current_time('timestamp') - $options['first_install']) > (DAY_IN_SECONDS * 0)) {
626
  add_action('admin_notices', array('GMW', 'notice_upgrade'));
627
  $notice = true;
628
  } // show upgrade notice
650
 
651
  $buy_url = admin_url('options-general.php?page=gmw_options&gmw_open_promo_dialog');
652
  $dismiss_url = add_query_arg(array('action' => 'gmw_dismiss_notice', 'notice' => 'license_expires', 'redirect' => urlencode($_SERVER['REQUEST_URI'])), admin_url('admin.php'));
653
+
654
+ $days = strtotime($options['license_expires'] . date(' G:i:m')) - time();
655
  $days = round($days / DAY_IN_SECONDS);
656
 
657
  echo '<div id="gmw_license_expires_notice" class="error notice"><p>';
658
+ echo 'Your <b>Google Maps Widget</b> <b style="color: #d54e21;">PRO</b> trial ';
659
+ if ($options['license_expires'] == date('Y-m-d')) {
 
 
660
  echo '<b>expires today</b>!';
661
+ echo ' A special <b>25% discount coupon</b> is valid only till trial lasts. Don\'t be late, no need to pay the full price.<br>';
662
+ echo ' All <b style="color: #d54e21;">PRO</b> features will be disabled once the trial expires.';
663
+ $button_text = 'Get PRO with a 25% discount - offer ends today';
664
+ } elseif (date('Y-m-d', time() + DAY_IN_SECONDS) == $options['license_expires']) {
665
+ echo '<b>expires tomorrow</b>!';
666
+ echo ' A special <b>25% discount coupon</b> is valid only till trial lasts. Don\'t be late, no need to pay the full price.<br>';
667
+ echo ' All <b style="color: #d54e21;">PRO</b> features will be disabled once the trial expires.';
668
+ $button_text = 'Get PRO with a 25% discount - offer ends tomorrow';
669
+ } elseif ($days > 1) {
670
+ echo '<b>expires in ' . $days . ' days</b>!';
671
+ echo ' A special <b>25% discount coupon</b> is valid only till trial lasts. Don\'t be late, no need to pay the full price.<br>';
672
+ echo ' All <b style="color: #d54e21;">PRO</b> features will be disabled once the trial expires.';
673
+ $button_text = 'Get PRO with a 25% discount - offer ends in ' . $days . ' days';
674
  } else {
675
  echo '<b>has expired</b>!';
676
+ echo ' All <b style="color: #d54e21;">PRO</b> features have been disabled.';
677
+ $button_text = 'Get PRO now';
 
 
 
 
678
  }
679
 
680
+ echo '<br><a href="' . esc_url($buy_url) . '" style="vertical-align: baseline; margin-top: 15px;" class="button-primary">' . $button_text . '</a>';
681
  if (!GMW::is_plugin_admin_page('settings')) {
682
  echo '&nbsp;&nbsp;<a href="' . esc_url($dismiss_url) . '" class="">' . __('I will pay the full price ($29) later', 'google-maps-widget') . '</a>';
683
  }
690
  $activate_url = admin_url('options-general.php?page=gmw_options&gmw_open_promo_dialog');
691
  $dismiss_url = add_query_arg(array('action' => 'gmw_dismiss_notice', 'notice' => 'upgrade', 'redirect' => urlencode($_SERVER['REQUEST_URI'])), admin_url('admin.php'));
692
 
693
+ echo '<div id="gmw_activate_notice" class="updated notice"><p>' . __('<b>Google Maps Widget</b> has more than 50 <b style="color: #d54e21;">PRO</b> features. Our support is fast & friendly, and licenses valid for an unlimited number of sites.', 'google-maps-widget');
694
 
695
  echo '<br><a href="' . esc_url($activate_url) . '" style="vertical-align: baseline; margin-top: 15px;" class="button-primary">' . __('Activate PRO features', 'google-maps-widget') . '</a>';
696
+ echo '&nbsp;&nbsp;<a href="' . esc_url($dismiss_url) . '" class="">' . __('I\'m not interested', 'google-maps-widget') . '</a>';
697
  echo '</p></div>';
698
  } // notice_activate_extra_features
699
 
758
  wp_enqueue_script('wp-color-picker');
759
  wp_enqueue_script('wp-pointer');
760
  wp_enqueue_script('gmw-cookie', plugins_url('js/jquery.cookie.js', __FILE__), array('jquery'), GMW::$version, true);
761
+ if (GMW::is_activated()) {
762
+ wp_enqueue_script('gmw-gmap', '//maps.google.com/maps/api/js', array(), GMW::$version, true);
763
+ }
764
  wp_enqueue_script('gmw-select2', plugins_url('js/select2.min.js', __FILE__), array('jquery'), GMW::$version, true);
765
  wp_enqueue_script('gmw-admin', plugins_url('js/gmw-admin.js', __FILE__), array('jquery'), GMW::$version, true);
766
 
781
  'map_picker_not_active' => __('Drag&drop address picking interface is a PRO feature. Interested in switching to PRO?', 'google-maps-widget'),
782
  'map' => false,
783
  'marker' => false,
784
+ 'trial_ok' => __('Your trial has been activated. Enjoy all PRO features for 7 days.' . "\n" . 'Check your email for a DISCOUNT coupon ;)', 'google-maps-widget'),
785
+ 'settings_url' => admin_url('options-general.php?page=gmw_options'),
786
  'pins_library' => plugins_url('/images/pins/', __FILE__),
787
  'disable_tooltips' => $options['disable_tooltips'],
788
  'is_activated' => GMW::is_activated(),
789
  'nonce_test_api_key' => wp_create_nonce('gmw_test_api_key'),
790
+ 'nonce_get_trial' => wp_create_nonce('gmw_get_trial'),
791
  'nonce_activate_license_key' => wp_create_nonce('gmw_activate_license_key'));
792
  wp_localize_script('gmw-admin', 'gmw', $js_localize);
793
  } // if
850
  // echo markup for promo dialog; only on widgets page
851
  static function admin_dialogs_markup() {
852
  $out = '';
853
+ $options = GMW::get_options();
854
+ $promo_delta = 3*60*60;
855
 
856
  if ((GMW::is_plugin_admin_page('widgets') || GMW::is_plugin_admin_page('settings'))) {
857
+ $current_user = wp_get_current_user();
858
+ if (empty($current_user->user_firstname)) {
859
+ $name = $current_user->display_name;
860
+ } else {
861
+ $name = $current_user->user_firstname;
862
+ }
863
+
864
  $out .= '<div id="gmw_promo_dialog" style="display: none;">';
865
 
866
  $out .= '<div id="gmw_dialog_intro" class="gmw_promo_dialog_screen">
867
  <div class="content">
868
+ <div class="header"><p><a href="#" class="gmw_goto_pro">Learn more</a> about <span class="gmw-pro">PRO</span> features.</p>';
869
+ if (current_time('timestamp') - $options['first_install'] < $promo_delta) {
870
+ $time = date(get_option('time_format'), $options['first_install'] + $promo_delta);
871
+ $out .= '<div class="gmw-discount">We\'ve prepared a special <b>25% welcoming discount</b> for you available <b>only until ' . $time . '</b>. Discount has been applied on the unlimited license. Be quick &amp; use the buy button below.</div>';
872
+ } elseif ($options['license_expires'] >= date('Y-m-d') && $options['license_type'] == 'trial') {
873
+ $out .= '<div class="gmw-discount">We\'ve prepared a special <b>25% trial discount</b> for you available <b>only while the trial is active</b>. Discount has been applied on the unlimited license. Be quick &amp; use the buy button below.</div>';
874
+ }
875
+ $out .= '</div>'; // header
876
+
877
+ $out .= '<div class="gmw-promo-box gmw-promo-box-lifetime gmw_goto_activation gmw-promo-box-hover">
878
+ <div class="gmw-promo-icon"><img src="' . GMW_PLUGIN_URL . '/images/icon-unlimited.png" alt="Unlimited Lifetime License" title="Unlimited Lifetime License"></div>
879
+ <div class="gmw-promo-description"><h3>Unlimited Lifetime License</h3><br>
880
+ <span>Unlimited sites + lifetime support &amp; upgrades</span></div>';
881
+ if (current_time('timestamp') - $options['first_install'] < $promo_delta) {
882
+ $out .= '<div class="gmw-promo-button gmw-promo-button-extra"><a href="http://www.gmapswidget.com/buy/?p=pro-welcome&r=welcome-GMW+v' . GMW::$version . '" data-noprevent="1" target="_blank">only $19</a><span>discount: 25%</span></div>';
883
+ } elseif ($options['license_expires'] >= date('Y-m-d') && $options['license_type'] == 'trial') {
884
+ $out .= '<div class="gmw-promo-button gmw-promo-button-extra"><a href="http://www.gmapswidget.com/buy/?p=pro-trial&r=welcome-GMW+v' . GMW::$version . '" data-noprevent="1" target="_blank">only $19</a><span>discount: 25%</span></div>';
885
+ } else {
886
+ $out .= '<div class="gmw-promo-button"><a href="http://www.gmapswidget.com/buy/?p=pro-unlimited&r=GMW+v' . GMW::$version . '" data-noprevent="1" target="_blank">BUY $25</a></div>';
887
+ }
888
+ $out .= '</div>';
889
+ $out .= '<div class="gmw-promo-box gmw-promo-box-yearly gmw_goto_activation">
890
+ <div class="gmw-promo-icon"><img src="' . GMW_PLUGIN_URL . '/images/icon-yearly.png" alt="Yearly License" title="Yearly License"></div>
891
+ <div class="gmw-promo-description"><h3>1 Year License</h3><br>
892
+ <span>Unlimited sites + 1 year of support &amp; upgrades</span></div>
893
+ <div class="gmw-promo-button"><a href="http://www.gmapswidget.com/buy/?p=yearly&r=GMW+v' . GMW::$version . '" data-noprevent="1" target="_blank">$11 /year</a></div>
894
  </div>';
895
+ $out .= '<div class="gmw-promo-box gmw-promo-box-trial gmw_goto_trial">
896
+ <div class="gmw-promo-icon"><img src="' . GMW_PLUGIN_URL . '/images/icon-trial.png" alt="7 Days Free Trial License" title="7 Days Free Trial License"></div>
897
+ <div class="gmw-promo-description"><h3>7 Days Free Trial</h3><br>
898
+ <span>Still on the fence? Test PRO for free.</span></div>
899
+ <div class="gmw-promo-button"><a href="#">Start</a></div>
 
 
 
 
 
 
 
900
  </div>';
901
+ $out .= '<p class="gmw-footer-intro">Already have a license key? <a href="#" class="gmw_goto_activation">Enter it here</a></p>';
902
  $out .= '</div></div>'; // dialog intro
903
 
904
  $out .= '<div id="gmw_dialog_activate" style="display: none;" class="gmw_promo_dialog_screen">
905
  <div class="content">';
906
  $out .= '<p class="input_row">
907
+ <input type="text" id="gmw_code" name="gmw_code" placeholder="Please enter the license key">
908
  <span style="display: none;" class="error gmw_code">Unable to verify license key. Unknown error.</span></p>
909
  <p class="center">
910
  <a href="#" class="button button-primary" id="gmw_activate">Activate PRO features</a>
912
  <p class="center">If you don\'t have a license key - <a href="#" class="gmw_goto_intro">Get it now</a></p>
913
  </div>';
914
  $out .= '<div class="footer">
 
915
  <ul class="gmw-faq-ul">
916
+ <li>Having problems paying or you misplaced your key? <a href="mailto:gmw@webfactoryltd.com?subject=Activation%20key%20problem">Email us</a></li>
917
  <li>Key not working? Our <a href="mailto:gmw@webfactoryltd.com?subject=Activation%20key%20problem">support</a> is here to help</li>
 
918
  </ul>
919
  </div>';
920
  $out .= '</div>'; // activate screen
921
 
922
  $out .= '<div id="gmw_dialog_pro_features" style="display: none;" class="gmw_promo_dialog_screen">
923
  <div class="content">';
924
+ $out .= '<h4>See how <span class="gmw-pro-red">PRO</span> features can make your life easier!</h4>';
925
  $out .= '<ul class="list-left">';
926
  $out .= '<li>11 thumbnail map skins</li>
927
+ <li>1000+ thumbnail map pins</li>
928
  <li>4 extra map image formats for even faster loading</li>
929
  <li>replace thumb with interactive map feature</li>
930
  <li>extra hidden sidebar for easier shortcode handling</li>
946
  <li>Google Analytics integration</li>
947
  <li>no ads</li>
948
  <li>no promo emails</li>
949
+ <li>premium email support</li>';
950
  $out .= '</ul>';
951
  $out .= ' </div>';
952
  $out .= '<div class="footer">';
956
  $out .= '</div>'; // pro features screen
957
 
958
  $out .= '<div id="gmw_dialog_trial" style="display: none;" class="gmw_promo_dialog_screen">
959
+ <div class="content">
960
+ <h3>Fill out the form and get your free trial started <b>INSTANTLY</b>!</h3>';
961
+ $out .= '<p class="input_row">
962
+ <input value="' . $name . '" type="text" id="gmw_name" name="gmw_name" placeholder="Your name">
963
+ <span class="error name" style="display: none;">Please enter your name.</span>
964
+ </p>';
965
+ $out .= '<p class="input_row">
966
+ <input value="' . $current_user->user_email . '" type="text" name="gmw_email" id="gmw_email" placeholder="Your email address" required="required">
967
+ <span style="display: none;" class="error email">Please double check your email address.</span>
968
+ </p>';
969
+ $out .= '<p class="center">
970
+ <a id="gmw_start_trial" href="#" class="button button-primary">Start a 7 days free trial</a></p>
971
+ <p class="center">Already have a license key? <a href="#" class="gmw_goto_activation">Enter it here</a></p>
972
+ </div>';
973
+ $out .= '<div class="footer">
974
+ <ul class="gmw-faq-ul">
975
+ <li>Please check your email for a special <b>discount code</b></li>
976
+ <li>We\'ll never share your email address</li>
977
+ <li>We hate spam too, so we never send it</li>
978
+ </ul>
979
+ </div>';
980
  $out .= '</div>'; // trial screen
981
 
982
  $out .= '</div>'; // dialog
1111
  echo '</div>'; // settings tab
1112
 
1113
  echo '<div id="gmw-export" style="display: none;">';
1114
+ if (GMW::is_activated()) {
1115
  echo '<table class="form-table">';
1116
  echo '<tr>
1117
  <th scope="row"><label for="">' . __('Export widgets', 'google-maps-widget') . '</label></th>
1142
  <p class="description">License key can be found in the confirmation email you received after purchasing.</p></td>
1143
  </tr>';
1144
  if (GMW::is_activated()) {
1145
+ if ($options['license_expires'] == '2035-01-01') {
1146
+ $valid = 'indefinitely';
1147
+ } else {
1148
+ $valid = 'until ' . date('F jS, Y', strtotime($options['license_expires']));
1149
+ if (date('Y-m-d') == $options['license_expires']) {
1150
+ $valid .= '; expires today';
1151
+ } elseif (date('Y-m-d', time() + DAY_IN_SECONDS) == $options['license_expires']) {
1152
+ $valid .= '; expires tomorrow';
1153
+ } elseif (date('Y-m-d', time() + 30 * DAY_IN_SECONDS) > $options['license_expires']) {
1154
+ $tmp = (strtotime($options['license_expires'] . date(' G:i:s')) - time()) / DAY_IN_SECONDS;
1155
+ $valid .= '; expires in ' . round($tmp) . ' days';
1156
+ }
1157
+ }
1158
  echo '<tr>
1159
  <th scope="row"><label for="">' . __('License Key Status', 'google-maps-widget') . '</label></th>
1160
  <td><b style="color: green">Active</b><br>
1161
+ Type: ' . str_replace('pro', 'PRO', $options['license_type']) . '<br>
1162
+ Valid ' . $valid . '</td>
1163
  </tr>';
1164
  } else {
1165
  echo '<tr>
1174
  echo '</form>';
1175
  echo '</div>'; // wrap
1176
  } // settings_screen
1177
+
1178
+
1179
+ // send user's name & email and get trial license key
1180
+ static function get_trial_ajax() {
1181
+ check_ajax_referer('gmw_get_trial');
1182
+
1183
+ $name = trim($_POST['name']);
1184
+ $email = trim($_POST['email']);
1185
+ if (defined('WPLANG')) {
1186
+ $lang = strtolower(substr(WPLANG, 0, 2));
1187
+ } else {
1188
+ $lang = 'en';
1189
+ }
1190
+
1191
+ $request_params = array('sslverify' => false, 'timeout' => 7, 'redirection' => 2);
1192
+ $request_args = array('action' => 'get_trial', 'name' => $name, 'email' => $email, 'lang' => $lang, 'ip' => $_SERVER['REMOTE_ADDR'], 'site' => get_home_url());
1193
+
1194
+ $url = add_query_arg($request_args, GMW::$licensing_servers[0]);
1195
+ $response = wp_remote_get(esc_url_raw($url), $request_params);
1196
+
1197
+ if (is_wp_error($response) || !wp_remote_retrieve_body($response)) {
1198
+ $url = add_query_arg($request_args, GMW::$licensing_servers[1]);
1199
+ $response = wp_remote_get(esc_url_raw($url), $request_params);
1200
+ }
1201
+
1202
+ if (!is_wp_error($response) && wp_remote_retrieve_body($response)) {
1203
+ $result = wp_remote_retrieve_body($response);
1204
+ $result = json_decode($result, true, 3);
1205
+ if (!empty($result['success']) && $result['success'] === true && is_array($result['data']) && sizeof($result['data']) == 3) {
1206
+ $result['data']['license_active'] = true;
1207
+ GMW::set_options($result['data']);
1208
+ wp_send_json_success();
1209
+ } elseif (isset($result['success']) && $result['success'] === false && !empty($result['data'])) {
1210
+ wp_send_json_error($result['data']);
1211
+ } else {
1212
+ wp_send_json_error('Invalid response from licensing server. Please try again later.');
1213
+ }
1214
+ } else {
1215
+ wp_send_json_error('Unable to contact licensing server. Please try again in a few moments.');
1216
+ }
1217
+ } // get_trial_ajax
1218
 
1219
 
1220
  // check activation code and save if valid
1242
  // check if activation code is valid
1243
  static function validate_activation_code($code) {
1244
  $request_params = array('sslverify' => false, 'timeout' => 7, 'redirection' => 2);
1245
+ $request_args = array('action' => 'validate_license', 'code' => $code, 'domain' => get_home_url());
1246
 
1247
  $out = array('success' => false, 'license_active' => false, 'activation_code' => $code, 'error' => '', 'license_type' => '', 'license_expires' => '1900-01-01');
1248
 
1249
+ $url = add_query_arg($request_args, GMW::$licensing_servers[0]);
1250
  $response = wp_remote_get(esc_url_raw($url), $request_params);
1251
 
1252
  if (is_wp_error($response) || !wp_remote_retrieve_body($response)) {
1253
+ $url = add_query_arg($request_args, GMW::$licensing_servers[1]);
1254
  $response = wp_remote_get(esc_url_raw($url), $request_params);
1255
  }
1256
 
1257
  if (!is_wp_error($response) && wp_remote_retrieve_body($response)) {
1258
  $result = wp_remote_retrieve_body($response);
1259
+ $result = json_decode($result, true, 3);
1260
  if (is_array($result['data']) && sizeof($result['data']) == 4) {
1261
  $out['success'] = true;
1262
  $out = array_merge($out, $result['data']);
images/icon-trial.png ADDED
Binary file
images/icon-unlimited.png ADDED
Binary file
images/icon-yearly.png ADDED
Binary file
images/pins/big/atom.png ADDED
Binary file
images/pins/big/camel.png ADDED
Binary file
images/pins/big/checkmark.png ADDED
Binary file
images/pins/big/clover.png ADDED
Binary file
images/pins/big/craft_store.png ADDED
Binary file
images/pins/big/crowd.png ADDED
Binary file
images/pins/big/customs.png ADDED
Binary file
images/pins/big/dance_class.png ADDED
Binary file
images/pins/big/dancing_hall.png ADDED
Binary file
images/pins/big/daycare.png ADDED
Binary file
images/pins/big/deep_sea_fishing.png ADDED
Binary file
images/pins/big/deer.png ADDED
Binary file
images/pins/big/dentist.png ADDED
Binary file
images/pins/big/department_store.png ADDED
Binary file
images/pins/big/detective.png ADDED
Binary file
images/pins/big/diamond.png ADDED
Binary file
images/pins/big/dino_park.png ADDED
Binary file
images/pins/big/diving.png ADDED
Binary file
images/pins/big/dogs_leash.png ADDED
Binary file
images/pins/big/dolphins.png ADDED
Binary file
images/pins/big/drinking_fountain.png ADDED
Binary file
images/pins/big/duck.png ADDED
Binary file
images/pins/big/earthquake.png ADDED
Binary file
images/pins/big/elephants.png ADDED
Binary file
images/pins/big/exchequer.png ADDED
Binary file
images/pins/big/farm_stand.png ADDED
Binary file
images/pins/big/fast_food.png ADDED
Binary file
images/pins/big/field.png ADDED
Binary file
images/pins/big/find_a_job.png ADDED
Binary file
images/pins/big/fish_chips.png ADDED
Binary file
images/pins/big/fishing.png ADDED
Binary file
images/pins/big/fishing_boat.png ADDED
Binary file
images/pins/big/fitness.png ADDED
Binary file
images/pins/big/fjord.png ADDED
Binary file
images/pins/big/food_truck.png ADDED
Binary file
images/pins/big/fountain.png ADDED
Binary file
images/pins/big/four_by_four.png ADDED
Binary file
images/pins/big/frequency_change.png ADDED
Binary file
images/pins/big/frog.png ADDED
Binary file
images/pins/big/fruits.png ADDED
Binary file
images/pins/big/gas_cylinder.png ADDED
Binary file
images/pins/big/geocaching.png ADDED
Binary file
images/pins/big/geothermal_site.png ADDED
Binary file
images/pins/big/geyser.png ADDED
Binary file
images/pins/big/ghost_town.png ADDED
Binary file
images/pins/big/gift.png ADDED
Binary file
images/pins/big/glacier.png ADDED
Binary file
images/pins/big/glasses.png ADDED
Binary file
images/pins/big/gondola.png ADDED
Binary file
images/pins/big/groceries.png ADDED
Binary file
images/pins/big/gumball_machine.png ADDED
Binary file
images/pins/big/handball.png ADDED
Binary file
images/pins/big/hanggliding.png ADDED
Binary file
images/pins/big/hare.png ADDED
Binary file
images/pins/big/hat.png ADDED
Binary file
images/pins/big/haybale.png ADDED
Binary file
images/pins/big/highschool.png ADDED
Binary file
images/pins/big/historical_museum.png ADDED
Binary file
images/pins/big/historical_quarter.png ADDED
Binary file
images/pins/big/home_center.png ADDED
Binary file
images/pins/big/hookah.png ADDED
Binary file
images/pins/big/horn.png ADDED
Binary file
images/pins/big/horse_riding.png ADDED
Binary file
images/pins/big/hospital.png ADDED
Binary file
images/pins/big/hotspring.png ADDED
Binary file
images/pins/big/hunting.png ADDED
Binary file
images/pins/big/hut.png ADDED
Binary file
images/pins/big/ice_hockey.png ADDED
Binary file
images/pins/big/iceskating.png ADDED
Binary file
images/pins/big/indoor_arena.png ADDED
Binary file
images/pins/big/jacuzzi.png ADDED
Binary file
images/pins/big/japanese-food.png ADDED
Binary file
images/pins/big/japanese-temple.png ADDED
Binary file
images/pins/big/jeep.png ADDED
Binary file
images/pins/big/jogging.png ADDED
Binary file
images/pins/big/judo.png ADDED
Binary file
images/pins/big/karate.png ADDED
Binary file
images/pins/big/karting.png ADDED
Binary file
images/pins/big/kayak.png ADDED
Binary file
images/pins/big/kebab.png ADDED
Binary file
images/pins/big/key.png ADDED
Binary file
images/pins/big/king.png ADDED
Binary file
images/pins/big/kiosk.png ADDED
Binary file
images/pins/big/kitesurfing.png ADDED
Binary file
images/pins/big/landfill.png ADDED
Binary file
images/pins/big/latern.png ADDED
Binary file
images/pins/big/library.png ADDED
Binary file
images/pins/big/lifeguard.png ADDED
Binary file
images/pins/big/lingerie.png ADDED
Binary file
images/pins/big/lobster.png ADDED
Binary file
images/pins/big/magic_show.png ADDED
Binary file
images/pins/big/map.png ADDED
Binary file
images/pins/big/marina.png ADDED
Binary file
images/pins/big/military.png ADDED
Binary file
images/pins/big/modern_tower.png ADDED
Binary file
images/pins/big/monkey.png ADDED
Binary file
images/pins/big/mosque.png ADDED
Binary file
images/pins/big/movie_rental.png ADDED
Binary file
images/pins/big/muffin.png ADDED
Binary file
images/pins/big/muffin_bagle.png ADDED
Binary file
images/pins/big/mural.png ADDED
Binary file
images/pins/big/museum_archeological.png ADDED
Binary file
images/pins/big/museum_art.png ADDED
Binary file
images/pins/big/museum_craft.png ADDED
Binary file
images/pins/big/museum_openair.png ADDED
Binary file
images/pins/big/museum_war.png ADDED
Binary file
images/pins/big/music_choral.png ADDED
Binary file
images/pins/big/music_classical.png ADDED
Binary file
images/pins/big/music_hiphop.png ADDED
Binary file
images/pins/big/music_live.png ADDED
Binary file
images/pins/big/music_rock.png ADDED
Binary file
images/pins/big/nanny.png ADDED
Binary file
images/pins/big/newspaper.png ADDED
Binary file
images/pins/big/no-nuke.png ADDED
Binary file
images/pins/big/nursery.png ADDED
Binary file
images/pins/big/nursing_home.png ADDED
Binary file
images/pins/big/one_way.png ADDED
Binary file
images/pins/big/pagoda.png ADDED
Binary file
images/pins/big/paintball.png ADDED
Binary file
images/pins/big/palace.png ADDED
Binary file
images/pins/big/paperclip.png ADDED
Binary file
images/pins/big/paragliding.png ADDED
Binary file
images/pins/big/parasailing.png ADDED
Binary file
images/pins/big/parking.png ADDED
Binary file
images/pins/big/party.png ADDED
Binary file
images/pins/big/patisserie.png ADDED
Binary file
images/pins/big/pen.png ADDED
Binary file
images/pins/big/penguin.png ADDED
Binary file
images/pins/big/perfumery.png ADDED
Binary file
images/pins/big/petanque.png ADDED
Binary file
images/pins/big/petroglyphs.png ADDED
Binary file
images/pins/big/phones.png ADDED
Binary file
images/pins/big/photography.png ADDED
Binary file
images/pins/big/printer.png ADDED
Binary file
images/pins/big/prison.png ADDED
Binary file
images/pins/big/puzzle.png ADDED
Binary file
images/pins/big/radio_control_model_car.png ADDED
Binary file
images/pins/big/railroad.png ADDED
Binary file
images/pins/big/rainy.png ADDED
Binary file
images/pins/big/rape.png ADDED
Binary file
images/pins/big/resort.png ADDED
Binary file
images/pins/big/restaurant_african.png ADDED
Binary file
images/pins/big/restaurant_breakfast.png ADDED
Binary file
images/pins/big/restaurant_buffet.png ADDED
Binary file
images/pins/big/restaurant_fish.png ADDED
Binary file
images/pins/big/restaurant_greek.png ADDED
Binary file
images/pins/big/restaurant_indian.png ADDED
Binary file
images/pins/big/restaurant_italian.png ADDED
Binary file
images/pins/big/restaurant_korean.png ADDED
Binary file
images/pins/big/restaurant_mediterranean.png ADDED
Binary file
images/pins/big/restaurant_mexican.png ADDED
Binary file
images/pins/big/restaurant_romantic.png ADDED
Binary file
images/pins/big/restaurant_steakhouse.png ADDED
Binary file
images/pins/big/restaurant_tapas.png ADDED
Binary file
images/pins/big/restaurant_thai.png ADDED
Binary file
images/pins/big/restaurant_turkish.png ADDED
Binary file
images/pins/big/revolt.png ADDED
Binary file
images/pins/big/rollerskate.png ADDED
Binary file
images/pins/big/ropescourse.png ADDED
Binary file
images/pins/big/rowboat.png ADDED
Binary file
images/pins/big/rugby_field.png ADDED
Binary file
images/pins/big/ruins.png ADDED
Binary file
images/pins/big/sandwich.png ADDED
Binary file
images/pins/big/sattelite.png ADDED
Binary file
images/pins/big/sauna.png ADDED
Binary file
images/pins/big/scubadiving.png ADDED
Binary file
images/pins/big/segway.png ADDED
Binary file
images/pins/big/seniorsite.png ADDED
Binary file
images/pins/big/septic_tank.png ADDED
Binary file
images/pins/big/share.png ADDED
Binary file
images/pins/big/sheriff.png ADDED
Binary file
images/pins/big/shore.png ADDED
Binary file
images/pins/big/shower.png ADDED
Binary file
images/pins/big/signpost.png ADDED
Binary file
images/pins/big/ski_boot.png ADDED
Binary file
images/pins/big/skiing.png ADDED
Binary file
images/pins/big/skijump.png ADDED
Binary file
images/pins/big/skilifting.png ADDED
Binary file
images/pins/big/skis.png ADDED
Binary file
images/pins/big/sleigh.png ADDED
Binary file
images/pins/big/slots.png ADDED
Binary file
images/pins/big/sneakers.png ADDED
Binary file
images/pins/big/snorkeling.png ADDED
Binary file
images/pins/big/snowboarding.png ADDED
Binary file
images/pins/big/snowflake.png ADDED
Binary file
images/pins/big/snowmobiling.png ADDED
Binary file
images/pins/big/snowpark_arc.png ADDED
Binary file
images/pins/big/snowshoeing.png ADDED
Binary file
images/pins/big/soccer.png ADDED
Binary file
images/pins/big/spaceport.png ADDED
Binary file
images/pins/big/spelunking.png ADDED
Binary file
images/pins/big/sport_utility_vehicle.png ADDED
Binary file
images/pins/big/sportscar.png ADDED
Binary file
images/pins/big/squash.png ADDED
Binary file
images/pins/big/squirrel.png ADDED
Binary file
images/pins/big/stadium.png ADDED
Binary file
images/pins/big/strip_club.png ADDED
Binary file
images/pins/big/subway.png ADDED
Binary file
images/pins/big/summercamp.png ADDED
Binary file
images/pins/big/sumo.png ADDED
Binary file
images/pins/big/surfacelift.png ADDED
Binary file
images/pins/big/surfing.png ADDED
Binary file
images/pins/big/takeaway.png ADDED
Binary file
images/pins/big/tea.png ADDED
Binary file
images/pins/big/teble_tennis.png ADDED
Binary file
images/pins/big/television.png ADDED
Binary file
images/pins/big/temple_hindu.png ADDED
Binary file
images/pins/big/tennis.png ADDED
Binary file
images/pins/big/terrace.png ADDED
Binary file
images/pins/big/textiles.png ADDED
Binary file
images/pins/big/the_ravada_pagoda.png ADDED
Binary file
images/pins/big/theater.png ADDED
Binary file
images/pins/big/theft.png ADDED
Binary file
images/pins/big/themepark.png ADDED
Binary file
images/pins/big/therapy.png ADDED
Binary file
images/pins/big/thermometer.png ADDED
Binary file
images/pins/big/ticket.png ADDED
Binary file
images/pins/big/tiger.png ADDED
Binary file
images/pins/big/toll_station.png ADDED
Binary file
images/pins/big/tools.png ADDED
Binary file
images/pins/big/toys.png ADDED
Binary file
images/pins/big/traffic_camera.png ADDED
Binary file
images/pins/big/tree_down.png ADDED
Binary file
images/pins/big/trolley.png ADDED
Binary file
images/pins/big/tunnel.png ADDED
Binary file
images/pins/big/turtle.png ADDED
Binary file
images/pins/big/tweet.png ADDED
Binary file
images/pins/big/van.png ADDED
Binary file
images/pins/big/vespa.png ADDED
Binary file
images/pins/big/video_games.png ADDED
Binary file
images/pins/big/villa.png ADDED
Binary file
images/pins/big/vineyard.png ADDED
Binary file
images/pins/big/volleyball.png ADDED
Binary file
images/pins/big/waiting.png ADDED
Binary file
images/pins/big/walkingtour.png ADDED
Binary file
images/pins/big/war.png ADDED
Binary file
images/pins/big/warehouse.png ADDED
Binary file
images/pins/big/water_pump.png ADDED
Binary file
images/pins/big/water_temperature.png ADDED
Binary file
images/pins/big/watercraft.png ADDED
Binary file
images/pins/big/waterfall.png ADDED
Binary file
images/pins/big/watermill.png ADDED
Binary file
images/pins/big/waterskiing.png ADDED
Binary file
images/pins/big/wedding.png ADDED
Binary file
images/pins/big/weights.png ADDED
Binary file
images/pins/big/wetlands.png ADDED
Binary file
images/pins/big/whale.png ADDED
Binary file
images/pins/big/wifi.png ADDED
Binary file
images/pins/big/windmill.png ADDED
Binary file
images/pins/big/wine_tasting.png ADDED
Binary file
images/pins/big/woodshed.png ADDED
Binary file
images/pins/big/work_office.png ADDED
Binary file
images/pins/big/worldwideweb.png ADDED
Binary file
images/pins/big/wrestling.png ADDED
Binary file
images/pins/big/yin_yang.png ADDED
Binary file
images/pins/big/yoga.png ADDED
Binary file
images/pins/big/yooner.png ADDED
Binary file
images/pins/big/youth_hostel.png ADDED
Binary file
images/pins/big/zombie.png ADDED
Binary file
js/gmw-admin.js CHANGED
@@ -303,18 +303,44 @@ jQuery(function($) {
303
  } // promo_option_change
304
 
305
 
306
- // already subscribed button in dialog
307
- $('.gmw_goto_activation').on('click', function(e) {
 
 
 
 
 
 
 
 
 
 
 
 
308
  $('.gmw_promo_dialog_screen').hide();
309
  $('#gmw_dialog_activate').show();
310
-
311
  if ($(this).data('noprevent')) {
312
  return true;
313
  } else {
 
314
  e.preventDefault();
315
  return false;
316
  }
317
- }); // already subscribed click
 
 
 
 
 
 
 
 
 
 
 
 
 
318
 
319
 
320
  // go to intro button in dialog
@@ -374,9 +400,9 @@ jQuery(function($) {
374
  $('#gmw_activate').on('click', function(e) {
375
  e.preventDefault();
376
 
377
- $('#gmw_promo_dialog input.error').removeClass('error');
378
- $('#gmw_promo_dialog span.error').hide();
379
- $('#gmw_promo_dialog input').addClass('gmw_spinner').addClass('gmw_disabled');
380
  $('#gmw_activate').addClass('gmw_disabled');
381
 
382
  $.post(ajaxurl, { 'action': 'gmw_activate', 'code': $('#gmw_code').val(), '_ajax_nonce': gmw.nonce_activate_license_key},
@@ -389,8 +415,8 @@ jQuery(function($) {
389
  tmp = tmp.replace('gmw_open_promo_dialog', '');
390
  window.location = tmp;
391
  } else {
392
- $('#gmw_promo_dialog input').addClass('error');
393
- $('#gmw_promo_dialog span.error.gmw_code').html(response.data).show();
394
  $('#gmw_code').focus().select();
395
  }
396
  }, 'json')
@@ -398,12 +424,68 @@ jQuery(function($) {
398
  alert(gmw.undocumented_error);
399
  })
400
  .always(function() {
401
- $('#gmw_promo_dialog input').removeClass('gmw_spinner').removeClass('gmw_disabled');
402
  $('#gmw_activate').removeClass('gmw_disabled');
403
- });;
404
 
405
  return false;
406
  }); // activate button click
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
407
 
408
 
409
  // open promo/activation dialog
303
  } // promo_option_change
304
 
305
 
306
+ // on hover for pricing table
307
+ $('#gmw_dialog_intro .gmw-promo-box').hover(
308
+ function() {
309
+ $('#gmw_dialog_intro .gmw-promo-box').removeClass('gmw-promo-box-hover');
310
+ $(this).addClass('gmw-promo-box-hover');
311
+ }, function() {
312
+ $('#gmw_dialog_intro .gmw-promo-box').removeClass('gmw-promo-box-hover');
313
+ $('#gmw_dialog_intro .gmw-promo-box:first').addClass('gmw-promo-box-hover');
314
+ }
315
+ );// on hover for pricing table
316
+
317
+
318
+ // already have a key button click in dialog
319
+ $('a.gmw_goto_activation').on('click', function(e) {
320
  $('.gmw_promo_dialog_screen').hide();
321
  $('#gmw_dialog_activate').show();
322
+
323
  if ($(this).data('noprevent')) {
324
  return true;
325
  } else {
326
+ e.stopPropagation();
327
  e.preventDefault();
328
  return false;
329
  }
330
+ }); // already have a key click
331
+
332
+
333
+ // already have a key button click in dialog
334
+ $('div.gmw_goto_activation').on('click', function(e) {
335
+ $('.gmw_promo_dialog_screen').hide();
336
+ $('#gmw_dialog_activate').show();
337
+
338
+ url = $(this).find('a').attr('href');
339
+ win = window.open(url, '_blank');
340
+ win.focus();
341
+
342
+ return false;
343
+ }); // already have a key click
344
 
345
 
346
  // go to intro button in dialog
400
  $('#gmw_activate').on('click', function(e) {
401
  e.preventDefault();
402
 
403
+ $('#gmw_dialog_activate input.error').removeClass('error');
404
+ $('#gmw_dialog_activate span.error').hide();
405
+ $('#gmw_dialog_activate input').addClass('gmw_spinner').addClass('gmw_disabled');
406
  $('#gmw_activate').addClass('gmw_disabled');
407
 
408
  $.post(ajaxurl, { 'action': 'gmw_activate', 'code': $('#gmw_code').val(), '_ajax_nonce': gmw.nonce_activate_license_key},
415
  tmp = tmp.replace('gmw_open_promo_dialog', '');
416
  window.location = tmp;
417
  } else {
418
+ $('#gmw_dialog_activate input').addClass('error');
419
+ $('#gmw_dialog_activate span.error.gmw_code').html(response.data).show();
420
  $('#gmw_code').focus().select();
421
  }
422
  }, 'json')
424
  alert(gmw.undocumented_error);
425
  })
426
  .always(function() {
427
+ $('#gmw_dialog_activate input').removeClass('gmw_spinner').removeClass('gmw_disabled');
428
  $('#gmw_activate').removeClass('gmw_disabled');
429
+ });
430
 
431
  return false;
432
  }); // activate button click
433
+
434
+
435
+ // get trial click
436
+ $('#gmw_start_trial').on('click', function(e) {
437
+ e.preventDefault();
438
+
439
+ err = false;
440
+ $('#gmw_dialog_trial input.error').removeClass('error');
441
+ $('#gmw_dialog_trial span.error').hide();
442
+ $('#gmw_dialog_trial input').addClass('gmw_disabled').addClass('gmw_spinner');
443
+ $('#gmw_start_trial').addClass('gmw_disabled');
444
+
445
+ if ($('#gmw_name').val().length < 3) {
446
+ $('#gmw_name').addClass('error');
447
+ $('#gmw_dialog_trial span.error.name').show();
448
+ $('#gmw_name').focus().select();
449
+
450
+ err = true;
451
+ } // check name
452
+
453
+ re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
454
+ if (!re.test($('#gmw_email').val())) {
455
+ $('#gmw_email').addClass('error');
456
+ $('#gmw_dialog_trial span.error.email').show();
457
+ $('#gmw_email').focus().select();
458
+ return false;
459
+ }
460
+
461
+ if (err) {
462
+ return false;
463
+ }
464
+
465
+ $.post(ajaxurl, { 'action': 'gmw_get_trial',
466
+ 'name': $('#gmw_name').val(),
467
+ 'email': $('#gmw_email').val(),
468
+ '_ajax_nonce': gmw.nonce_get_trial},
469
+ function(response) {
470
+ if (response && response.success == true) {
471
+ alert(gmw.trial_ok);
472
+ document.location = gmw.settings_url;
473
+ } else if (response && response.success == false && response.data) {
474
+ alert(response.data);
475
+ } else {
476
+ alert(gmw.undocumented_error);
477
+ }
478
+ }, 'json')
479
+ .fail(function() {
480
+ alert(gmw.undocumented_error);
481
+ })
482
+ .always(function() {
483
+ $('#gmw_dialog_trial input').removeClass('gmw_disabled').removeClass('gmw_spinner');
484
+ $('#gmw_start_trial').removeClass('gmw_disabled');
485
+ });
486
+
487
+ return false;
488
+ }); // get trial click
489
 
490
 
491
  // open promo/activation dialog
readme.txt CHANGED
@@ -6,7 +6,7 @@ License: GPLv2 or later
6
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
7
  Requires at least: 3.8
8
  Tested up to: 4.4
9
- Stable tag: 3.20
10
 
11
  Displays a single image, super-fast loading Google map in a widget. A larger map with all interactive features is available on click in a lightbox.
12
 
@@ -31,7 +31,7 @@ http://www.youtube.com/watch?v=y1siX9ha7Pw&hd=1
31
  * pin size
32
  * pin label
33
  * custom pin icon - any image can be used
34
- * 700+ pins library in PRO
35
  * link type - lightbox, custom URL, replace thumbnail with interactive map, or disable link
36
  * text above map
37
  * text below map
@@ -144,6 +144,12 @@ Read the <a href="http://wordpress.org/support/plugin/google-maps-widget">suppor
144
 
145
  == Changelog ==
146
 
 
 
 
 
 
 
147
  = 3.20 =
148
  * 2016/03/10
149
  * new map pins
6
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
7
  Requires at least: 3.8
8
  Tested up to: 4.4
9
+ Stable tag: 3.25
10
 
11
  Displays a single image, super-fast loading Google map in a widget. A larger map with all interactive features is available on click in a lightbox.
12
 
31
  * pin size
32
  * pin label
33
  * custom pin icon - any image can be used
34
+ * 1000+ pins library in PRO
35
  * link type - lightbox, custom URL, replace thumbnail with interactive map, or disable link
36
  * text above map
37
  * text below map
144
 
145
  == Changelog ==
146
 
147
+ = 3.25 =
148
+ * 2016/03/24
149
+ * even more new map pins
150
+ * bug fixes
151
+ * 7 days trial can now be activated within the plugin
152
+
153
  = 3.20 =
154
  * 2016/03/10
155
  * new map pins