Various updates and fixes
authorChuck Scott <cscott@gaslightmedia.com>
Tue, 27 Oct 2015 18:39:20 +0000 (14:39 -0400)
committerChuck Scott <cscott@gaslightmedia.com>
Tue, 27 Oct 2015 18:39:20 +0000 (14:39 -0400)
24 files changed:
classes/data/dataMemberInfo.php
controllers/admin.php
lib/html5-File-Upload/assets/css/styles.css [deleted file]
lib/html5-File-Upload/assets/img/background_tile_1.jpg [deleted file]
lib/html5-File-Upload/assets/img/background_tile_2.jpg [deleted file]
lib/html5-File-Upload/assets/img/background_tile_3.jpg [deleted file]
lib/html5-File-Upload/assets/img/blue_line.jpg [deleted file]
lib/html5-File-Upload/assets/img/done.png [deleted file]
lib/html5-File-Upload/assets/img/logo.jpg [deleted file]
lib/html5-File-Upload/assets/img/tzine.png [deleted file]
lib/html5-File-Upload/assets/js/jquery.filedrop.js [deleted file]
lib/html5-File-Upload/assets/js/upload-script.js [deleted file]
lib/html5-File-Upload/post_file.php [deleted file]
lib/html5-File-Upload/sample-index.html [deleted file]
models/admin/dashboardWidget/index.php
models/admin/management/import.php
models/admin/members/index.php
models/admin/members/list.php
views/admin/dashboardWidget/index.html
views/admin/management/import/readDatabase.html
views/admin/member/index.html
views/admin/member/memberInfo.html
views/admin/members/index.html
views/admin/members/list.html

index 21f1938..23e1d60 100644 (file)
@@ -451,6 +451,43 @@ class GlmDataMemberInfo extends GlmDataAbstract
 
        }
 
+       /*
+        * Get simplified list of member info records.
+        *
+        * @param string $where Where clause
+        *     Note the table refernces M and I.
+        *
+        * @return object Class object
+        *
+        */
+       public function getSimpleMemberInfoList($where = '')
+       {
+
+           // Save current list of fields
+           $f = $this->fields;
+
+           // Replace fields list with limited list
+           $this->fields = array(
+                       'id' => $f['id'],
+               'member' => $f['member'],
+               'member_name' => $f['member_name'],
+               'member_slug' => $f['member_slug'],
+               'member_pointer' => $f['member_pointer'],
+               'reference_name' => $f['reference_name'],
+                       'status' => $f['status'],
+               'create_time' => $f['create_time'],
+            'modify_time' => $f['modify_time']
+           );
+
+           // Get the simplified list
+           $list = $this->getList($where);
+
+           // Restore full fields list
+           $this->fields = $f;
+
+           return $list;
+       }
+
 
 }
 
index b5fa09a..d140cac 100644 (file)
@@ -465,6 +465,12 @@ class glmMembersAdmin extends GlmPluginSupport
                     )
             );
 
+            // Set widget default position to right column
+            global $wp_meta_boxes;
+            $glm_dashboard_widget = $wp_meta_boxes['dashboard']['normal']['core']['glm_members_admin_dashboard_widget'];
+            unset($wp_meta_boxes['dashboard']['normal']['core']['glm_members_admin_dashboard_widget']);
+            $wp_meta_boxes['dashboard']['side']['core']['glm_members_admin_dashboard_widget'] = $glm_dashboard_widget;
+
         }
     }
 
diff --git a/lib/html5-File-Upload/assets/css/styles.css b/lib/html5-File-Upload/assets/css/styles.css
deleted file mode 100644 (file)
index 5f2545d..0000000
+++ /dev/null
@@ -1,256 +0,0 @@
-/*-------------------------\r
-       Simple reset\r
---------------------------*/\r
-\r
-\r
-/*\r
-*{\r
-       margin:0;\r
-       padding:0;\r
-}\r
-*/\r
-\r
-\r
-/*-------------------------\r
-       General Styles\r
---------------------------*/\r
-\r
-/*\r
-\r
-html{\r
-       background:url('../img/background_tile_2.jpg');\r
-       min-height:100%;\r
-       position:relative;\r
-       \r
-}\r
-\r
-body{\r
-       color:#fff;\r
-       min-height:600px;\r
-       font:14px/1.3 'Segoe UI',Arial, sans-serif;\r
-}\r
-\r
-a, a:visited {\r
-       text-decoration:none;\r
-       outline:none;\r
-       color:#54a6de;\r
-}\r
-\r
-a:hover{\r
-       text-decoration:underline;\r
-}\r
-\r
-header, footer{\r
-       display:block;\r
-}\r
-\r
-*/\r
-\r
-/*-------------------------\r
-       Header Styles\r
---------------------------*/\r
-\r
-/*\r
-\r
-header{\r
-       background:url('../img/background_tile_1.jpg');\r
-       padding:75px;\r
-       position: relative;\r
-}\r
-\r
-header:before,\r
-#dropbox:before{\r
-       display: block;\r
-       content:'';\r
-       height:4px;\r
-       width:100%;\r
-       background:url('../img/blue_line.jpg');\r
-       position: absolute;\r
-       top:0;\r
-       left:0;\r
-       box-shadow:0 2px 2px rgba(0,0,0,0.4);\r
-}\r
-\r
-\r
-h1{\r
-       background:url('../img/logo.jpg') no-repeat top center;\r
-       height:92px;\r
-       overflow: hidden;\r
-       text-indent: -99999px;\r
-       text-align: center;\r
-}\r
-\r
-*/\r
-\r
-/*-------------------------\r
-       Dropbox Element\r
---------------------------*/\r
-\r
-\r
-\r
-#dropbox{\r
-/*    \r
-       background:url('../img/background_tile_3.jpg');\r
-       \r
-       border-radius:3px;\r
-       position: relative;\r
-       margin:80px auto 90px;\r
-       min-height: 290px;\r
-       overflow: hidden;\r
-       padding-bottom: 40px;\r
-    width: 990px;\r
-       \r
-       box-shadow:0 0 4px rgba(0,0,0,0.3) inset,0 -3px 2px rgba(0,0,0,0.1);\r
-*/\r
-}\r
-\r
-\r
-#dropbox .message{\r
-       font-size: 11px;\r
-    text-align: center;\r
-    padding-top:160px;\r
-    display: block;\r
-}\r
-\r
-#dropbox .message i{\r
-       color:#ccc;\r
-       font-size:10px;\r
-}\r
-\r
-#dropbox:before{\r
-       border-radius:3px 3px 0 0;\r
-}\r
-\r
-\r
-\r
-/*-------------------------\r
-       Image Previews\r
---------------------------*/\r
-\r
-\r
-\r
-#dropbox .preview{\r
-       width:245px;\r
-       height: 215px;\r
-       float:left;\r
-       margin: 55px 0 0 60px;\r
-       position: relative;\r
-       text-align: center;\r
-}\r
-\r
-#dropbox .preview img{\r
-       max-width: 240px;\r
-       max-height:180px;\r
-       border:3px solid #fff;\r
-       display: block;\r
-       \r
-       box-shadow:0 0 2px #000;\r
-}\r
-\r
-#dropbox .imageHolder{\r
-       display: inline-block;\r
-       position:relative;\r
-}\r
-\r
-#dropbox .uploaded{\r
-       position: absolute;\r
-       top:0;\r
-       left:0;\r
-       height:100%;\r
-       width:100%;\r
-       background: url('../img/done.png') no-repeat center center rgba(255,255,255,0.5);\r
-       display: none;\r
-}\r
-\r
-#dropbox .preview.done .uploaded{\r
-       display: block;\r
-}\r
-\r
-\r
-\r
-/*-------------------------\r
-       Progress Bars\r
---------------------------*/\r
-\r
-\r
-\r
-#dropbox .progressHolder{\r
-       position: absolute;\r
-       background-color:#252f38;\r
-       height:12px;\r
-       width:100%;\r
-       left:0;\r
-       bottom: 0;\r
-       \r
-       box-shadow:0 0 2px #000;\r
-}\r
-\r
-#dropbox .progress{\r
-       background-color:#2586d0;\r
-       position: absolute;\r
-       height:100%;\r
-       left:0;\r
-       width:0;\r
-       \r
-       box-shadow: 0 0 1px rgba(255, 255, 255, 0.4) inset;\r
-       \r
-       -moz-transition:0.25s;\r
-       -webkit-transition:0.25s;\r
-       -o-transition:0.25s;\r
-       transition:0.25s;\r
-}\r
-\r
-#dropbox .preview.done .progress{\r
-       width:100% !important;\r
-}\r
-\r
-\r
-\r
-/*----------------------------\r
-       The Footer\r
------------------------------*/\r
-\r
-/*\r
-\r
-footer{\r
-       display:block;\r
-       background-color: #151517;\r
-    \r
-    position:fixed;\r
-       width:100%;\r
-       height:70px;\r
-       bottom:0;\r
-       left:0;\r
-       z-index: 100000;\r
-       \r
-       box-shadow: 0 -1px 2px #171717;\r
-       -webkit-box-shadow: 0 -1px 2px #171717;\r
-       -moz-box-shadow: 0 -1px 2px #171717;\r
-}\r
-\r
-footer h2{\r
-       font-size:20px;\r
-       font-weight:normal;\r
-       left:50%;\r
-       margin-left:-400px;\r
-       padding:22px 0;\r
-       position:absolute;\r
-       width: 540px;\r
-       color:#eee;\r
-}\r
-\r
-footer a.tzine,a.tzine:visited{\r
-       background:url("../img/tzine.png") no-repeat right top;\r
-       border:none;\r
-       text-decoration:none;\r
-       color:#FCFCFC;\r
-       font-size:12px;\r
-       height:70px;\r
-       left:50%;\r
-       line-height:31px;\r
-       margin:23px 0 0 110px;\r
-       position:absolute;\r
-       top:0;\r
-       width:290px;\r
-}\r
-*/
\ No newline at end of file
diff --git a/lib/html5-File-Upload/assets/img/background_tile_1.jpg b/lib/html5-File-Upload/assets/img/background_tile_1.jpg
deleted file mode 100644 (file)
index ad83d30..0000000
Binary files a/lib/html5-File-Upload/assets/img/background_tile_1.jpg and /dev/null differ
diff --git a/lib/html5-File-Upload/assets/img/background_tile_2.jpg b/lib/html5-File-Upload/assets/img/background_tile_2.jpg
deleted file mode 100644 (file)
index c7b5efc..0000000
Binary files a/lib/html5-File-Upload/assets/img/background_tile_2.jpg and /dev/null differ
diff --git a/lib/html5-File-Upload/assets/img/background_tile_3.jpg b/lib/html5-File-Upload/assets/img/background_tile_3.jpg
deleted file mode 100644 (file)
index ac39d60..0000000
Binary files a/lib/html5-File-Upload/assets/img/background_tile_3.jpg and /dev/null differ
diff --git a/lib/html5-File-Upload/assets/img/blue_line.jpg b/lib/html5-File-Upload/assets/img/blue_line.jpg
deleted file mode 100644 (file)
index 2af2c9f..0000000
Binary files a/lib/html5-File-Upload/assets/img/blue_line.jpg and /dev/null differ
diff --git a/lib/html5-File-Upload/assets/img/done.png b/lib/html5-File-Upload/assets/img/done.png
deleted file mode 100644 (file)
index 22a1410..0000000
Binary files a/lib/html5-File-Upload/assets/img/done.png and /dev/null differ
diff --git a/lib/html5-File-Upload/assets/img/logo.jpg b/lib/html5-File-Upload/assets/img/logo.jpg
deleted file mode 100644 (file)
index 5c83252..0000000
Binary files a/lib/html5-File-Upload/assets/img/logo.jpg and /dev/null differ
diff --git a/lib/html5-File-Upload/assets/img/tzine.png b/lib/html5-File-Upload/assets/img/tzine.png
deleted file mode 100644 (file)
index df4abaf..0000000
Binary files a/lib/html5-File-Upload/assets/img/tzine.png and /dev/null differ
diff --git a/lib/html5-File-Upload/assets/js/jquery.filedrop.js b/lib/html5-File-Upload/assets/js/jquery.filedrop.js
deleted file mode 100644 (file)
index ec2b238..0000000
+++ /dev/null
@@ -1,315 +0,0 @@
-/*\r
- * Default text - jQuery plugin for html5 dragging files from desktop to browser\r
- *\r
- * Author: Weixi Yen\r
- *\r
- * Email: [Firstname][Lastname]@gmail.com\r
- * \r
- * Copyright (c) 2010 Resopollution\r
- * \r
- * Licensed under the MIT license:\r
- *   http://www.opensource.org/licenses/mit-license.php\r
- *\r
- * Project home:\r
- *   http://www.github.com/weixiyen/jquery-filedrop\r
- *\r
- * Version:  0.1.0\r
- *\r
- * Features:\r
- *      Allows sending of extra parameters with file.\r
- *      Works with Firefox 3.6+\r
- *      Future-compliant with HTML5 spec (will work with Webkit browsers and IE9)\r
- * Usage:\r
- *     See README at project homepage\r
- *\r
- */\r
-(function($){\r
-\r
-       jQuery.event.props.push("dataTransfer");\r
-       var opts = {},\r
-               default_opts = {\r
-                       url: '',\r
-                       refresh: 1000,\r
-                       paramname: 'userfile',\r
-                       maxfiles: 25,\r
-                       maxfilesize: 1, // MBs\r
-                       data: {},\r
-                       drop: empty,\r
-                       dragEnter: empty,\r
-                       dragOver: empty,\r
-                       dragLeave: empty,\r
-                       docEnter: empty,\r
-                       docOver: empty,\r
-                       docLeave: empty,\r
-                       beforeEach: empty,\r
-                       afterAll: empty,\r
-                       rename: empty,\r
-                       error: function(err, file, i){alert(err);},\r
-                       uploadStarted: empty,\r
-                       uploadFinished: empty,\r
-                       progressUpdated: empty,\r
-                       speedUpdated: empty\r
-               },\r
-               errors = ["BrowserNotSupported", "TooManyFiles", "FileTooLarge"],\r
-               doc_leave_timer,\r
-               stop_loop = false,\r
-               files_count = 0,\r
-               files;\r
-\r
-       $.fn.filedrop = function(options) {\r
-               opts = $.extend( {}, default_opts, options );\r
-               \r
-               this.bind('drop', drop).bind('dragenter', dragEnter).bind('dragover', dragOver).bind('dragleave', dragLeave);\r
-               $(document).bind('drop', docDrop).bind('dragenter', docEnter).bind('dragover', docOver).bind('dragleave', docLeave);\r
-       };\r
-     \r
-       function drop(e) {\r
-               opts.drop(e);\r
-               files = e.dataTransfer.files;\r
-               if (files === null || files === undefined) {\r
-                       opts.error(errors[0]);\r
-                       return false;\r
-               }\r
-               \r
-               files_count = files.length;\r
-               upload();\r
-               e.preventDefault();\r
-               return false;\r
-       }\r
-       \r
-       function getBuilder(filename, filedata, boundary) {\r
-               var dashdash = '--',\r
-                       crlf = '\r\n',\r
-                       builder = '';\r
-\r
-               $.each(opts.data, function(i, val) {\r
-               if (typeof val === 'function') val = val();\r
-                       builder += dashdash;\r
-                       builder += boundary;\r
-                       builder += crlf;\r
-                       builder += 'Content-Disposition: form-data; name="'+i+'"';\r
-                       builder += crlf;\r
-                       builder += crlf;\r
-                       builder += val;\r
-                       builder += crlf;\r
-               });\r
-               \r
-               builder += dashdash;\r
-               builder += boundary;\r
-               builder += crlf;\r
-               builder += 'Content-Disposition: form-data; name="'+opts.paramname+'"';\r
-               builder += '; filename="' + filename + '"';\r
-               builder += crlf;\r
-               \r
-               builder += 'Content-Type: application/octet-stream';\r
-               builder += crlf;\r
-               builder += crlf; \r
-               \r
-               builder += filedata;\r
-               builder += crlf;\r
-        \r
-               builder += dashdash;\r
-               builder += boundary;\r
-               builder += dashdash;\r
-               builder += crlf;\r
-               return builder;\r
-       }\r
-\r
-       function progress(e) {\r
-               if (e.lengthComputable) {\r
-                       var percentage = Math.round((e.loaded * 100) / e.total);\r
-                       if (this.currentProgress != percentage) {\r
-                               \r
-                               this.currentProgress = percentage;\r
-                               opts.progressUpdated(this.index, this.file, this.currentProgress);\r
-                               \r
-                               var elapsed = new Date().getTime();\r
-                               var diffTime = elapsed - this.currentStart;\r
-                               if (diffTime >= opts.refresh) {\r
-                                       var diffData = e.loaded - this.startData;\r
-                                       var speed = diffData / diffTime; // KB per second\r
-                                       opts.speedUpdated(this.index, this.file, speed);\r
-                                       this.startData = e.loaded;\r
-                                       this.currentStart = elapsed;\r
-                               }\r
-                       }\r
-               }\r
-       }\r
-    \r
-    \r
-    \r
-       function upload() {\r
-               stop_loop = false;\r
-               if (!files) {\r
-                       opts.error(errors[0]);\r
-                       return false;\r
-               }\r
-               var filesDone = 0,\r
-                       filesRejected = 0;\r
-               \r
-               if (files_count > opts.maxfiles) {\r
-                   opts.error(errors[1]);\r
-                   return false;\r
-               }\r
-\r
-               for (var i=0; i<files_count; i++) {\r
-                       if (stop_loop) return false;\r
-                       try {\r
-                               if (beforeEach(files[i]) != false) {\r
-                                       if (i === files_count) return;\r
-                                       var reader = new FileReader(),\r
-                                               max_file_size = 1048576 * opts.maxfilesize;\r
-                                               \r
-                                       reader.index = i;\r
-                                       if (files[i].size > max_file_size) {\r
-                                               opts.error(errors[2], files[i], i);\r
-                                               filesRejected++;\r
-                                               continue;\r
-                                       }\r
-                                       \r
-                                       reader.onloadend = send;\r
-                                       reader.readAsBinaryString(files[i]);\r
-                               } else {\r
-                                       filesRejected++;\r
-                               }\r
-                       } catch(err) {\r
-                               opts.error(errors[0]);\r
-                               return false;\r
-                       }\r
-               }\r
-           \r
-               function send(e) {\r
-                       // Sometimes the index is not attached to the\r
-                       // event object. Find it by size. Hack for sure.\r
-                       if (e.target.index == undefined) {\r
-                               e.target.index = getIndexBySize(e.total);\r
-                       }\r
-                       \r
-                       var xhr = new XMLHttpRequest(),\r
-                               upload = xhr.upload,\r
-                               file = files[e.target.index],\r
-                               index = e.target.index,\r
-                               start_time = new Date().getTime(),\r
-                               boundary = '------multipartformboundary' + (new Date).getTime(),\r
-                               builder;\r
-                               \r
-                       newName = rename(file.name);\r
-                       if (typeof newName === "string") {\r
-                               builder = getBuilder(newName, e.target.result, boundary);\r
-                       } else {\r
-                               builder = getBuilder(file.name, e.target.result, boundary);\r
-                       }\r
-                       \r
-                       upload.index = index;\r
-                       upload.file = file;\r
-                       upload.downloadStartTime = start_time;\r
-                       upload.currentStart = start_time;\r
-                       upload.currentProgress = 0;\r
-                       upload.startData = 0;\r
-                       upload.addEventListener("progress", progress, false);\r
-                       \r
-                       xhr.open("POST", opts.url, true);\r
-                       xhr.setRequestHeader('content-type', 'multipart/form-data; boundary=' \r
-                           + boundary);\r
-                           \r
-                       xhr.sendAsBinary(builder);  \r
-                       \r
-                       opts.uploadStarted(index, file, files_count);  \r
-                       \r
-                       xhr.onload = function() { \r
-                           if (xhr.responseText) {\r
-                               var now = new Date().getTime(),\r
-                                   timeDiff = now - start_time,\r
-                                   result = opts.uploadFinished(index, file, jQuery.parseJSON(xhr.responseText), timeDiff);\r
-                                       filesDone++;\r
-                                       if (filesDone == files_count - filesRejected) {\r
-                                               afterAll();\r
-                                       }\r
-                           if (result === false) stop_loop = true;\r
-                           }\r
-                       };\r
-               }\r
-       }\r
-    \r
-       function getIndexBySize(size) {\r
-               for (var i=0; i < files_count; i++) {\r
-                       if (files[i].size == size) {\r
-                               return i;\r
-                       }\r
-               }\r
-               \r
-               return undefined;\r
-       }\r
-    \r
-       function rename(name) {\r
-               return opts.rename(name);\r
-       }\r
-       \r
-       function beforeEach(file) {\r
-               return opts.beforeEach(file);\r
-       }\r
-       \r
-       function afterAll() {\r
-               return opts.afterAll();\r
-       }\r
-       \r
-       function dragEnter(e) {\r
-               clearTimeout(doc_leave_timer);\r
-               e.preventDefault();\r
-               opts.dragEnter(e);\r
-       }\r
-       \r
-       function dragOver(e) {\r
-               clearTimeout(doc_leave_timer);\r
-               e.preventDefault();\r
-               opts.docOver(e);\r
-               opts.dragOver(e);\r
-       }\r
-        \r
-       function dragLeave(e) {\r
-               clearTimeout(doc_leave_timer);\r
-               opts.dragLeave(e);\r
-               e.stopPropagation();\r
-       }\r
-        \r
-       function docDrop(e) {\r
-               e.preventDefault();\r
-               opts.docLeave(e);\r
-               return false;\r
-       }\r
-        \r
-       function docEnter(e) {\r
-               clearTimeout(doc_leave_timer);\r
-               e.preventDefault();\r
-               opts.docEnter(e);\r
-               return false;\r
-       }\r
-        \r
-       function docOver(e) {\r
-               clearTimeout(doc_leave_timer);\r
-               e.preventDefault();\r
-               opts.docOver(e);\r
-               return false;\r
-       }\r
-        \r
-       function docLeave(e) {\r
-               doc_leave_timer = setTimeout(function(){\r
-                       opts.docLeave(e);\r
-               }, 200);\r
-       }\r
-        \r
-       function empty(){}\r
-       \r
-       try {\r
-               if (XMLHttpRequest.prototype.sendAsBinary) return;\r
-               XMLHttpRequest.prototype.sendAsBinary = function(datastr) {\r
-                   function byteValue(x) {\r
-                       return x.charCodeAt(0) & 0xff;\r
-                   }\r
-                   var ords = Array.prototype.map.call(datastr, byteValue);\r
-                   var ui8a = new Uint8Array(ords);\r
-                   this.send(ui8a.buffer);\r
-               }\r
-       } catch(e) {}\r
-     \r
-})(jQuery);
\ No newline at end of file
diff --git a/lib/html5-File-Upload/assets/js/upload-script.js b/lib/html5-File-Upload/assets/js/upload-script.js
deleted file mode 100644 (file)
index 3341086..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-$(function(){\r
-       \r
-       var dropbox = $('#dropbox'),\r
-               message = $('.message', dropbox);\r
-       \r
-       dropbox.filedrop({\r
-               // The name of the $_FILES entry:\r
-               paramname:'pic',\r
-               \r
-               maxfiles: 5,\r
-       maxfilesize: 2,\r
-               url: 'post_file.php',\r
-               \r
-               uploadFinished:function(i,file,response){\r
-                       $.data(file).addClass('done');\r
-                       // response is the JSON object that post_file.php returns\r
-               },\r
-               \r
-       error: function(err, file) {\r
-                       switch(err) {\r
-                               case 'BrowserNotSupported':\r
-                                       showMessage('Your browser does not support HTML5 file uploads!');\r
-                                       break;\r
-                               case 'TooManyFiles':\r
-                                       alert('Too many files! Please select 5 at most! (configurable)');\r
-                                       break;\r
-                               case 'FileTooLarge':\r
-                                       alert(file.name+' is too large! Please upload files up to 2mb (configurable).');\r
-                                       break;\r
-                               default:\r
-                                       break;\r
-                       }\r
-               },\r
-               \r
-               // Called before each upload is started\r
-               beforeEach: function(file){\r
-                       if(!file.type.match(/^image\//)){\r
-                               alert('Only images are allowed!');\r
-                               \r
-                               // Returning false will cause the\r
-                               // file to be rejected\r
-                               return false;\r
-                       }\r
-               },\r
-               \r
-               uploadStarted:function(i, file, len){\r
-                       createImage(file);\r
-               },\r
-               \r
-               progressUpdated: function(i, file, progress) {\r
-                       $.data(file).find('.progress').width(progress);\r
-               }\r
-        \r
-       });\r
-       \r
-       var template = '<div class="preview">'+\r
-                                               '<span class="imageHolder">'+\r
-                                                       '<img />'+\r
-                                                       '<span class="uploaded"></span>'+\r
-                                               '</span>'+\r
-                                               '<div class="progressHolder">'+\r
-                                                       '<div class="progress"></div>'+\r
-                                               '</div>'+\r
-                                       '</div>'; \r
-       \r
-       \r
-       function createImage(file){\r
-\r
-               var preview = $(template), \r
-                       image = $('img', preview);\r
-                       \r
-               var reader = new FileReader();\r
-               \r
-               image.width = 100;\r
-               image.height = 100;\r
-               \r
-               reader.onload = function(e){\r
-                       \r
-                       // e.target.result holds the DataURL which\r
-                       // can be used as a source of the image:\r
-                       \r
-                       image.attr('src',e.target.result);\r
-               };\r
-               \r
-               // Reading the file as a DataURL. When finished,\r
-               // this will trigger the onload function above:\r
-               reader.readAsDataURL(file);\r
-               \r
-               message.hide();\r
-               preview.appendTo(dropbox);\r
-               \r
-               // Associating a preview container\r
-               // with the file, using jQuery's $.data():\r
-               \r
-               $.data(file,preview);\r
-       }\r
-\r
-       function showMessage(msg){\r
-               message.html(msg);\r
-       }\r
-\r
-});
\ No newline at end of file
diff --git a/lib/html5-File-Upload/post_file.php b/lib/html5-File-Upload/post_file.php
deleted file mode 100644 (file)
index c364f94..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-<?php\r
-\r
-// If you want to ignore the uploaded files, \r
-// set $demo_mode to true;\r
-\r
-$demo_mode = false;\r
-$upload_dir = 'uploads/';\r
-$allowed_ext = array('jpg','jpeg','png','gif');\r
-\r
-\r
-if(strtolower($_SERVER['REQUEST_METHOD']) != 'post'){\r
-       exit_status('Error! Wrong HTTP method!');\r
-}\r
-\r
-\r
-if(array_key_exists('pic',$_FILES) && $_FILES['pic']['error'] == 0 ){\r
-       \r
-       $pic = $_FILES['pic'];\r
-\r
-       if(!in_array(get_extension($pic['name']),$allowed_ext)){\r
-               exit_status('Only '.implode(',',$allowed_ext).' files are allowed!');\r
-       }       \r
-\r
-       if($demo_mode){\r
-               \r
-               // File uploads are ignored. We only log them.\r
-               \r
-               $line = implode('               ', array( date('r'), $_SERVER['REMOTE_ADDR'], $pic['size'], $pic['name']));\r
-               file_put_contents('log.txt', $line.PHP_EOL, FILE_APPEND);\r
-               \r
-               exit_status('Uploads are ignored in demo mode.');\r
-       }\r
-       \r
-       \r
-       // Move the uploaded file from the temporary \r
-       // directory to the uploads folder:\r
-       \r
-       if(move_uploaded_file($pic['tmp_name'], $upload_dir.$pic['name'])){\r
-               exit_status('File was uploaded successfuly!');\r
-       }\r
-       \r
-}\r
-\r
-exit_status('Something went wrong with your upload!');\r
-\r
-\r
-// Helper functions\r
-\r
-function exit_status($str){\r
-       echo json_encode(array('status'=>$str));\r
-       exit;\r
-}\r
-\r
-function get_extension($file_name){\r
-       $ext = explode('.', $file_name);\r
-       $ext = array_pop($ext);\r
-       return strtolower($ext);\r
-}\r
-?>
\ No newline at end of file
diff --git a/lib/html5-File-Upload/sample-index.html b/lib/html5-File-Upload/sample-index.html
deleted file mode 100644 (file)
index 50aa031..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE html>\r
-<html>\r
-    <head>\r
-        <meta charset="utf-8" />\r
-        <title>HTML5 File Drag and Drop Upload with jQuery and PHP | Tutorialzine Demo</title>\r
-        \r
-        <!-- Our CSS stylesheet file -->\r
-        <link rel="stylesheet" href="assets/css/styles.css" />\r
-        \r
-        <!--[if lt IE 9]>\r
-          <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>\r
-        <![endif]-->\r
-    </head>\r
-    \r
-    <body>\r
-               \r
-               <header>\r
-                       <h1>HTML5 File Upload with jQuery and PHP</h1>\r
-               </header>\r
-               \r
-               <div id="dropbox">\r
-                       <span class="message">Drop images here to upload. <br /><i>(they will only be visible to you)</i></span>\r
-               </div>\r
-               \r
-        <footer>\r
-               <h2>HTML5 File Upload with jQuery and PHP</h2>\r
-            <a class="tzine" href="http://tutorialzine.com/2011/09/html5-file-upload-jquery-php/">Read &amp; Download on</a>\r
-        </footer>\r
-        \r
-        <!-- Including The jQuery Library -->\r
-               <script src="http://code.jquery.com/jquery-1.6.3.min.js"></script>\r
-               \r
-               <!-- Including the HTML5 Uploader plugin -->\r
-               <script src="assets/js/jquery.filedrop.js"></script>\r
-               \r
-               <!-- The main script file -->\r
-        <script src="assets/js/script.js"></script>\r
-    \r
-    </body>\r
-</html>\r
-\r
index d784028..0142d91 100644 (file)
@@ -148,6 +148,11 @@ class GlmMembersAdmin_dashboardWidget_index extends GlmDataMembers
         $MemberInfo = new GlmDataMemberInfo($this->wpdb, $this->config);
         $membersPending = $MemberInfo->getStats('status = '.$this->config['status_numb']['Pending']);
 
+        // Get member information records with bad or no lat/lon
+        $hideArchived = " T.status != ".$this->config['status_numb']['Archived'];
+        $badLatLonList = $MemberInfo->getSimpleMemberInfoList($hideArchived.' AND (T.lat = 0 OR T.lon = 0)');
+        $haveBadLatLon = (count($badLatLonList) > 0);
+
         // If there's members with pending information, list them
         $pendingList = false;
         if ($membersPending > 0) {
@@ -159,6 +164,8 @@ class GlmMembersAdmin_dashboardWidget_index extends GlmDataMembers
             'numbMembers' => $stats,
             'membersList' => $membersList,
             'membersPending' => $membersPending,
+            'haveBadLatLon' => $haveBadLatLon,
+            'badLatLonList' => $badLatLonList,
             'haveMemberTypes' => $haveMemberTypes,
             'haveCategories' => $haveCategories,
             'haveAccommodationTypes' => $haveAccommodationTypes,
index 396c2e1..f18b7c4 100644 (file)
@@ -827,12 +827,30 @@ class GlmMembersAdmin_management_import
                      */
 
                     // Import Members
+                    $numbMembersActive = 0;
+                    $numbMembersInactive = 0;
                     while (list ($key, $val) = each ($member) ) {
 
+                        // Determine if member is active and set access accordingly
+                        if ($val['active'] == 't') {
+
+                            // Member is active, so set to active-moderated
+                            $access = $this->config['memb_access_numb']['Moderated'];
+                            $numbMembersActive++;
+
+                        } else {
+
+                            // Member is not active, so set to no display no access
+                            $access = $this->config['memb_access_numb']['NotDisplayed'];
+                            $numbMembersInactive++;
+
+                        }
+
+                        // Add main member record
                         $res = $this->wpdb->insert(
                                 GLM_MEMBERS_PLUGIN_DB_PREFIX.'members',
                                 array(
-                                        'access' => $this->config['memb_access_numb']['Moderated'],
+                                        'access' => $access,
                                         'member_type' => $defaultMemberType,
                                         'created' => date('Y-m-d'),
                                         'name' => $val['member_name'],
@@ -998,6 +1016,8 @@ class GlmMembersAdmin_management_import
                     $templateData['numbStates'] = count($state);
                     $templateData['numbRegions'] = count($region);
                     $templateData['numbMembers'] = count($member);
+                    $templateData['numbMembersActive'] = $numbMembersActive;
+                    $templateData['numbMembersInactive'] = $numbMembersInactive;
                     $templateData['numbCategories'] = count($catTrans);
                     $templateData['numbCategoryMembers'] = count($membCat);
                     $templateData['numbAmenities'] = count($amenity);
index 58f1b7f..e1bd5ac 100644 (file)
@@ -147,11 +147,16 @@ class GlmMembersAdmin_members_index extends GlmDataMembers
         $MemberInfo = new GlmDataMemberInfo($this->wpdb, $this->config);
         $membersPending = $MemberInfo->getStats('status = '.$this->config['status_numb']['Pending']);
 
+        // Get member information records with bad or no lat/lon
+        $hideArchived = " T.status != ".$this->config['status_numb']['Archived'];
+        $badLatLonList = $MemberInfo->getSimpleMemberInfoList($hideArchived.' AND (T.lat = 0 OR T.lon = 0)');
+        $haveBadLatLon = (count($badLatLonList) > 0);
+
         // If there's members with pending information, list them
         $pendingList = false;
         if ($membersPending > 0) {
 
-            $pendingList = $MemberInfo->getList('status = '.$this->config['status_numb']['Pending']);
+            $pendingList = $MemberInfo->getSimpleMemberInfoList('status = '.$this->config['status_numb']['Pending']);
         }
 
         // Compile template data
@@ -159,6 +164,8 @@ class GlmMembersAdmin_members_index extends GlmDataMembers
             'numbMembers' => $stats,
             'membersList' => $membersList,
             'membersPending' => $membersPending,
+            'haveBadLatLon' => $haveBadLatLon,
+            'badLatLonList' => $badLatLonList,
             'haveMemberTypes' => $haveMemberTypes,
             'haveCategories' => $haveCategories,
             'haveAccommodationTypes' => $haveAccommodationTypes,
index 3c67359..6bd88f0 100644 (file)
@@ -126,6 +126,28 @@ class GlmMembersAdmin_members_list extends GlmDataMembers
             $where .= " AND T.access != ".$this->config['memb_access_numb']['Archived'];
         }
 
+        // Get a list of categories for filtering
+        require_once(GLM_MEMBERS_PLUGIN_CLASS_PATH.'/data/dataCategories.php');
+        $Categories = new GlmDataCategories($this->wpdb, $this->config);
+        $categories = $Categories->getListSortedParentChild(false);
+
+        // Check if there is a category filter
+        if (isset($_REQUEST['filterCategory'])) {
+            $filterCat = ($_REQUEST['filterCategory'] - 0);
+            $where .= " AND T.id in (
+                    SELECT DISTINCT(I.member)
+                      FROM ".GLM_MEMBERS_PLUGIN_DB_PREFIX."member_info I,
+                           ".GLM_MEMBERS_PLUGIN_DB_PREFIX."category_member_info M,
+                           ".GLM_MEMBERS_PLUGIN_DB_PREFIX."categories C
+                     WHERE I.id = M.member_info
+                       AND (
+                           M.category = $filterCat
+                           OR (C.parent = $filterCat AND M.category = C.id)
+                           )
+            )";
+        }
+
+
         // Get a current list of members
         $list = $this->getList($where);
 
@@ -173,9 +195,11 @@ class GlmMembersAdmin_members_list extends GlmDataMembers
         $templateData = array(
             'haveMembers' => $haveMembers,
             'members' => $list,
+            'categories' => $categories,
             'haveFilter' => $haveFilter,
             'filterArchived' => $filterArchived,
             'filterPending' => $filterPending,
+            'filterCat' => $filterCat,
             'filterName' => stripslashes($filterName)
 //            'canEdit' => $canEdit
         );
index 953e5f6..063bff3 100644 (file)
         <tr><th>Number of Members Listed: </th><td><a href="{$adminURL}?page=glm-members-admin-menu-members-list" class="glm-right">List Members</a><span class="glm-left">{$numbMembers}</span></td></tr>
     </table>
     
-{if $membersPending}
+{if $haveBadLatLon}
     <hr>
-    <h4><span  class="glm-error">Pending Member Information</span></h4>
+    <h4><span  class="glm-error">Records with Bad Map Locations</span></h4>
     
     <table class="wp-list-table widefat fixed posts glm-admin-table"">
-        <thead>
+        <tbody>
+    {assign var="i" value="0"}
+    {foreach $badLatLonList as $p}
+        {if $i++ is odd by 1} 
             <tr>
-                <th>Member Name</th>
-                <th>Reference Name</th>
+        {else}
+            <tr class="alternate">
+        {/if}
+                <td>
+                    <a href="{$adminURL}?page=glm-members-admin-menu-member&glm_action=memberInfo&member={$p.member_pointer}&id={$p.id}}">{$p.member}</a>
+                </td>
             </tr>
-        </thead>
+    {/foreach}
+        </tbody>
+    </table>
+{/if}
+
+{if $membersPending}
+    <hr>
+    <h4><span  class="glm-error">Pending Member Information</span></h4>
+    
+    <table class="wp-list-table widefat fixed posts glm-admin-table"">
         <tbody>
     {assign var="i" value="0"}
     {foreach $pendingList as $p}
@@ -75,9 +91,6 @@
                 <td>
                     <a href="{$adminURL}?page=glm-members-admin-menu-member&glm_action=memberInfo&member={$p.member_pointer}&id={$p.id}}">{$p.member}</a>
                 </td>
-                <td>
-                    {$p.reference_name}
-                </td>
             </tr>
     {/foreach}
         </tbody>
index e3dc778..59dc475 100644 (file)
@@ -13,6 +13,8 @@
         <tr><th>States:</th><td>{$numbStates}</td></tr>
         <tr><th>Regions:</th><td>{$numbRegions}</td></tr>
         <tr><th>Members:</th><td>{$numbMembers}</td></tr>
+        <tr><th>Members Active:</th><td>{$numbMembersActive}</td></tr>
+        <tr><th>Members Inactive:</th><td>{$numbMembersInactive}</td></tr>
         <tr><th>Categories:</th><td>{$numbCategories}</td></tr>
         <tr><th>Member Category Entires:</th><td>{$numbCategoryMembers}</td></tr>
         <tr><th>Amenities:</th><td>{$numbAmenities}</td></tr>
index 09db980..acdd205 100644 (file)
     
   <p>&nbsp;</p>
 
-    <div>
-        <h3>Member Information Versions</h3>
+    <a href="{$thisURL}?page={$thisPage}&glm_action=memberInfo&member={$memberID}" class="button-primary glm-button glm-right">Add New Member Information Version</a>
+    <br clear="all">
+    <p>
+        <h3 class="glm-left">Member Information Versions</h3>
         <span class="glm-right">
             <p>
                 <input type="checkbox" id="showArchived"{if $showArchived} checked="checked"{/if}> Show archived information&nbsp;&nbsp;
             </p>
         </span>
-    </div> 
-  {if $haveMember}
-    {if $haveInfoRecords}
-    
-    <a href="{$thisURL}?page={$thisPage}&glm_action=memberInfo&member={$memberID}" class="button-primary glm-button glm-right">Add New Member Information Version</a>
-        
-    {if $noActive}
-        <h3 class="glm-error">There is no active information for this member.</h3>
-    {/if}
-    
+    </p> 
+
     <table class="wp-list-table widefat fixed posts glm-admin-table"">
         <thead>
             <tr>
             </tr>
         </thead>
         <tbody>
+    
+  {if $haveMember}
+    {if $haveInfoRecords}
+    
       {assign var="i" value="0"}
       {foreach $memberInfoRecords as $m}
         {if $i++ is odd by 1} 
                 </td>
             </tr>
       {/foreach}
-        </tbody>
-    </table>
     {else}
-    <h3 class="glm-notice">You do not yet have any member information entered.</h3>
-    <p><a href="{$thisURL}?page={$thisPage}&glm_action=memberInfo&member={$memberID}">Click here too start entering information for this member.</a></p>
-    {/if}
+    <tr><td colspan="5"><a href="{$thisURL}?page={$thisPage}&glm_action=memberInfo&member={$memberID}">Click here too start entering information for this member.</a></td></tr>
   {/if}
+        </tbody>
+    </table>
+ {/if}
 
 {else}        
     <h3 class="glm-error">You do not have any Member Types setup.</h3>
index 73db7e7..1f87a45 100644 (file)
         
     </form>
 
-    <!-- Include scripts for html5-File-Upload -->
-    
     <script type="text/javascript">
         jQuery(document).ready(function($) {
 
index 5ddb03b..cf5b03c 100644 (file)
     
     <table class="glm-admin-table">
         <tr><th>Number of Members Listed: </th><td>{$numbMembers}</td></tr>
-        <tr>
-            <th{if $membersPending} class="glm-notice"{/if}>Pending Member Information: </th><td>{$membersPending}</td>
-        </tr>
     </table>
 
+{if $haveBadLatLon}
+    <h3>Member Information with Bad Map Location Information</h3>
+    
+    <table class="wp-list-table widefat fixed posts glm-admin-table"">
+        <thead>
+            <tr>
+                <th>Member Name</th>
+                <th>Last Updated</th>
+                <th>Reference Name</th>
+                <th>&nbsp;</th>
+            </tr>
+        </thead>
+        <tbody>
+    {assign var="i" value="0"}
+    {foreach $badLatLonList as $p}
+        {if $i++ is odd by 1} 
+            <tr>
+        {else}
+            <tr class="alternate">
+        {/if}
+                <td>
+                    <a href="{$thisURL}?page=glm-members-admin-menu-member&glm_action=memberInfo&member={$p.member_pointer}&id={$p.id}}">{$p.member}</a>
+                </td>
+                <td>
+                    {$p.modify_time.datetime}
+                </td>
+                <td>
+                    {$p.reference_name}
+                </td>
+                <td>
+                    <a href="{$thisURL}?page=glm-members-admin-menu-member&glm_action=memberInfo&member={$p.member_pointer}&id={$p.id}}" class="button-primary glm-right">Manage</a>
+                </td>
+            </tr>
+    {/foreach}
+        </tbody>
+    </table>
+{/if}
+
 {if $membersPending}
-    <h2>Pending Member Information</h2>
+    <h3>Pending Member Information</h3>
     
     <table class="wp-list-table widefat fixed posts glm-admin-table"">
         <thead>
index 39bb35f..e102e9f 100644 (file)
@@ -2,9 +2,19 @@
     
     <form class="glm-right" onSubmit="return false;">
        <span{if $haveFilter} class="glm-notice"{/if}><b>List Filters:</b>&nbsp;&nbsp;</span> 
-       <span class="glm-item-container"><input type="checkbox" id="filterArchived" class="listFilter"{if $filterArchived} checked{/if}>Show Archived</span>&nbsp;&nbsp;
-       <span class="glm-item-container"><input type="checkbox" id="filterPending" class="listFilter"{if $filterPending} checked{/if}>Only show Pending Information</span>&nbsp;&nbsp;
-       <span class="glm-item-container"><input type="text" id="filterName" class="listFilter" value="{$filterName}"> Search</span>
+       <input type="checkbox" id="filterArchived" class="listFilter"{if $filterArchived} checked{/if}>Show Archived&nbsp;&nbsp;
+       <input type="checkbox" id="filterPending" class="listFilter"{if $filterPending} checked{/if}>Only show Pending Information&nbsp;&nbsp;
+        <select id="filterCategories" class="listFilter">
+            <option id="categoryNone" value=""></option>
+    {foreach from=$categories item=v}
+            <option value="{$v.id}" data-parent="{$v.parent.name}"{if $v.id == $filterCat} selected{/if}>
+                {if $v.parent.value}&nbsp;&nbsp;&nbsp;&nbsp;{/if}{$v.name}
+            </option>
+    {/foreach}
+        </select>
+        Categories
+       &nbsp;&nbsp;
+       <input type="text" id="filterName" class="listFilter" value="{$filterName}"> Search
     </form>
     
     <h2>List of Members</h2>
                       filter += '&filterPending=true';
                 }
 
+                // Check for category filter
+                cat = $("#filterCategories").val();
+                if (cat != '') {
+                      filter += '&filterCategory=' + cat;
+                }
+
                        // Check for member name filter
                        var filterName = $("#filterName").val();
                        if (filterName != '') {