adding ajax actions for updating and retrieving theme options from the database
authorAnthony Talarico <talarico@gaslightmedia.com>
Wed, 16 Oct 2019 00:58:18 +0000 (20:58 -0400)
committerAnthony Talarico <talarico@gaslightmedia.com>
Wed, 16 Oct 2019 00:58:18 +0000 (20:58 -0400)
admin/defines.php
admin/dist/js/glm-options.js
admin/glm-theme-options.php
admin/js/components/Sidebar.js
admin/js/components/fields/Toggle.js
admin/js/store/index.js
admin/js/store/reducers/optionsReducers.js
admin/utility.php

index dafb25e..ec00506 100644 (file)
@@ -3,6 +3,7 @@ namespace Glm\GlmThemeOptions\Defines;
 if(!class_exists('Defines')){
     class Defines{
         public static $glm_options_url;
+        public static $glm_theme_options = "glm_theme_options";
         function  __construct(){
             $this::$glm_options_url = get_template_directory_uri().'/admin';
         }
index 8448dff..a76efd9 100644 (file)
@@ -164,7 +164,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var reac
 /***/ (function(module, __webpack_exports__, __webpack_require__) {
 
 "use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-redux */ \"./node_modules/react-redux/es/index.js\");\n/* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-router-dom */ \"./node_modules/react-router-dom/esm/react-router-dom.js\");\n/* harmony import */ var _manifests__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../manifests */ \"./js/manifests/index.js\");\n/* harmony import */ var _styles_Sidebar__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../styles/Sidebar */ \"./js/styles/Sidebar.js\");\n/* harmony import */ var _assets_images_glm_logo_png__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../../assets/images/glm-logo.png */ \"../assets/images/glm-logo.png\");\n/* harmony import */ var _assets_images_glm_logo_png__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_assets_images_glm_logo_png__WEBPACK_IMPORTED_MODULE_5__);\n\n\n\n\n\n\n\nvar Sidebar = function Sidebar(props) {\n  var mounted = react__WEBPACK_IMPORTED_MODULE_0__[\"useEffect\"];\n  var updated = react__WEBPACK_IMPORTED_MODULE_0__[\"useEffect\"];\n  var firstRender = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useRef\"])(true);\n  mounted(function () {\n    return function cleanup() {// clean up logic\n    };\n  }, []);\n  updated(function () {\n    if (firstRender.current) {\n      firstRender.current = false;\n      return;\n    }\n  });\n  return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n    id: \"glmto-sidebar\",\n    style: _styles_Sidebar__WEBPACK_IMPORTED_MODULE_4__[\"default\"].container\n  }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n    id: \"glmto-sidebar-logo\",\n    style: _styles_Sidebar__WEBPACK_IMPORTED_MODULE_4__[\"default\"].logo\n  }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"img\", {\n    src: _assets_images_glm_logo_png__WEBPACK_IMPORTED_MODULE_5___default.a,\n    alt: \"\"\n  })), _manifests__WEBPACK_IMPORTED_MODULE_3__[\"options\"].map(function (option, index) {\n    return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_router_dom__WEBPACK_IMPORTED_MODULE_2__[\"NavLink\"], {\n      key: \"sidebar-\".concat(option.label),\n      to: {\n        pathname: \"/dashboard\",\n        state: {\n          option: option\n        }\n      },\n      style: {\n        display: \"block\",\n        padding: \"8px\"\n      }\n    }, \" \", option.label, \" \");\n  }));\n};\n\nvar mapStatetoProps = function mapStatetoProps(state) {\n  return state;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(react_redux__WEBPACK_IMPORTED_MODULE_1__[\"connect\"])(mapStatetoProps, null)(Sidebar));\n\n//# sourceURL=webpack:///./js/components/Sidebar.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-redux */ \"./node_modules/react-redux/es/index.js\");\n/* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-router-dom */ \"./node_modules/react-router-dom/esm/react-router-dom.js\");\n/* harmony import */ var _manifests__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../manifests */ \"./js/manifests/index.js\");\n/* harmony import */ var _styles_Sidebar__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../styles/Sidebar */ \"./js/styles/Sidebar.js\");\n/* harmony import */ var _assets_images_glm_logo_png__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../../assets/images/glm-logo.png */ \"../assets/images/glm-logo.png\");\n/* harmony import */ var _assets_images_glm_logo_png__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_assets_images_glm_logo_png__WEBPACK_IMPORTED_MODULE_5__);\n\n\n\n\n\n\n\nvar Sidebar = function Sidebar(props) {\n  var mounted = react__WEBPACK_IMPORTED_MODULE_0__[\"useEffect\"];\n  var updated = react__WEBPACK_IMPORTED_MODULE_0__[\"useEffect\"];\n  var firstRender = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useRef\"])(true);\n  mounted(function () {\n    return function cleanup() {// clean up logic\n    };\n  }, []);\n  updated(function () {\n    if (firstRender.current) {\n      firstRender.current = false;\n      return;\n    }\n  });\n  return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n    id: \"glmto-sidebar\",\n    style: _styles_Sidebar__WEBPACK_IMPORTED_MODULE_4__[\"default\"].container\n  }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n    id: \"glmto-sidebar-logo\",\n    style: _styles_Sidebar__WEBPACK_IMPORTED_MODULE_4__[\"default\"].logo\n  }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"img\", {\n    src: _assets_images_glm_logo_png__WEBPACK_IMPORTED_MODULE_5___default.a,\n    alt: \"\"\n  })), _manifests__WEBPACK_IMPORTED_MODULE_3__[\"options\"].map(function (option, index) {\n    return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_router_dom__WEBPACK_IMPORTED_MODULE_2__[\"Link\"], {\n      key: \"sidebar-\".concat(option.label),\n      to: {\n        pathname: \"/dashboard\",\n        state: {\n          option: option\n        }\n      },\n      style: {\n        display: \"block\",\n        padding: \"8px\"\n      }\n    }, \" \", option.label, \" \");\n  }));\n};\n\nvar mapStatetoProps = function mapStatetoProps(state) {\n  return state;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(react_redux__WEBPACK_IMPORTED_MODULE_1__[\"connect\"])(mapStatetoProps, null)(Sidebar));\n\n//# sourceURL=webpack:///./js/components/Sidebar.js?");
 
 /***/ }),
 
@@ -236,7 +236,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var reac
 /***/ (function(module, __webpack_exports__, __webpack_require__) {
 
 "use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-redux */ \"./node_modules/react-redux/es/index.js\");\n/* harmony import */ var _store_actionCreators_system__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../store/actionCreators/system */ \"./js/store/actionCreators/system.js\");\n/* harmony import */ var _store_actionCreators_themeOptions__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../store/actionCreators/themeOptions */ \"./js/store/actionCreators/themeOptions.js\");\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === \"[object Arguments]\")) { return; } var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\nvar Toggle = function Toggle(props) {\n  var mounted = react__WEBPACK_IMPORTED_MODULE_0__[\"useEffect\"];\n  var updated = react__WEBPACK_IMPORTED_MODULE_0__[\"useEffect\"];\n  var firstRender = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useRef\"])(true);\n\n  var _useState = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])({\n    checked: props.themeOptions.sticky_header\n  }),\n      _useState2 = _slicedToArray(_useState, 2),\n      toggleState = _useState2[0],\n      updateToggleState = _useState2[1];\n\n  mounted(function () {\n    return function cleanup() {// clean up logic\n    };\n  }, []);\n  updated(function () {\n    if (firstRender.current) {\n      firstRender.current = false;\n      return;\n    }\n\n    console.log(props);\n    return function cleanup() {};\n  });\n\n  var handleChange = function handleChange(e) {\n    var target = event.target;\n    var value = target.type === 'checkbox' ? target.checked : target.value;\n    updateToggleState(_objectSpread({}, toggleState, {\n      checked: value\n    }));\n    props.updateThemeOptions({\n      state: _defineProperty({}, props.option, value)\n    });\n  }; // this.props.updateGameData({scrap: 1000, robots: 5}).then(console.log(this.props.gameDataReducer));\n\n\n  return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n    className: \"switch small\"\n  }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"input\", {\n    className: \"switch-input\",\n    id: props.option,\n    type: \"checkbox\",\n    name: props.option,\n    onChange: handleChange,\n    checked: props.themeOptions.sticky_header\n  }), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"label\", {\n    className: \"switch-paddle\",\n    htmlFor: props.option\n  }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"span\", {\n    className: \"switch-active\",\n    \"aria-hidden\": \"true\"\n  }, \"On\"), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"span\", {\n    className: \"switch-inactive\",\n    \"aria-hidden\": \"true\"\n  }, \"Off\"))));\n};\n\nvar mapDispatchToProps = {\n  updateThemeOptions: _store_actionCreators_themeOptions__WEBPACK_IMPORTED_MODULE_3__[\"updateThemeOptions\"],\n  toggleDrawerState: _store_actionCreators_system__WEBPACK_IMPORTED_MODULE_2__[\"toggleDrawerState\"]\n};\n\nvar mapStateToProps = function mapStateToProps(state) {\n  return state;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(react_redux__WEBPACK_IMPORTED_MODULE_1__[\"connect\"])(mapStateToProps, mapDispatchToProps)(Toggle));\n\n//# sourceURL=webpack:///./js/components/fields/Toggle.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-redux */ \"./node_modules/react-redux/es/index.js\");\n/* harmony import */ var _store_actionCreators_system__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../store/actionCreators/system */ \"./js/store/actionCreators/system.js\");\n/* harmony import */ var _store_actionCreators_themeOptions__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../store/actionCreators/themeOptions */ \"./js/store/actionCreators/themeOptions.js\");\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === \"[object Arguments]\")) { return; } var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\nvar Toggle = function Toggle(props) {\n  var mounted = react__WEBPACK_IMPORTED_MODULE_0__[\"useEffect\"];\n  var updated = react__WEBPACK_IMPORTED_MODULE_0__[\"useEffect\"];\n  var firstRender = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useRef\"])(true);\n\n  var _useState = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])({\n    checked: props.themeOptions.sticky_header\n  }),\n      _useState2 = _slicedToArray(_useState, 2),\n      toggleState = _useState2[0],\n      updateToggleState = _useState2[1];\n\n  mounted(function () {\n    return function cleanup() {// clean up logic\n    };\n  }, []);\n  updated(function () {\n    if (firstRender.current) {\n      firstRender.current = false;\n      return;\n    }\n\n    return function cleanup() {};\n  });\n\n  var handleChange = function handleChange(e) {\n    var target = event.target;\n    var value = target.type === 'checkbox' ? target.checked : target.value;\n    updateToggleState(_objectSpread({}, toggleState, {\n      checked: value\n    }));\n    props.updateThemeOptions({\n      state: _defineProperty({}, props.option, value)\n    });\n  }; // this.props.updateGameData({scrap: 1000, robots: 5}).then(console.log(this.props.gameDataReducer));\n\n\n  return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n    className: \"switch small\"\n  }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"input\", {\n    className: \"switch-input\",\n    id: props.option,\n    type: \"checkbox\",\n    name: props.option,\n    onChange: handleChange,\n    checked: props.themeOptions.sticky_header\n  }), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"label\", {\n    className: \"switch-paddle\",\n    htmlFor: props.option\n  }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"span\", {\n    className: \"switch-active\",\n    \"aria-hidden\": \"true\"\n  }, \"On\"), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"span\", {\n    className: \"switch-inactive\",\n    \"aria-hidden\": \"true\"\n  }, \"Off\"))));\n};\n\nvar mapDispatchToProps = {\n  updateThemeOptions: _store_actionCreators_themeOptions__WEBPACK_IMPORTED_MODULE_3__[\"updateThemeOptions\"],\n  toggleDrawerState: _store_actionCreators_system__WEBPACK_IMPORTED_MODULE_2__[\"toggleDrawerState\"]\n};\n\nvar mapStateToProps = function mapStateToProps(state) {\n  return state;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(react_redux__WEBPACK_IMPORTED_MODULE_1__[\"connect\"])(mapStateToProps, mapDispatchToProps)(Toggle));\n\n//# sourceURL=webpack:///./js/components/fields/Toggle.js?");
 
 /***/ }),
 
@@ -380,7 +380,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) *
 /***/ (function(module, __webpack_exports__, __webpack_require__) {
 
 "use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"store\", function() { return store; });\n/* harmony import */ var redux__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! redux */ \"./node_modules/redux/es/redux.js\");\n/* harmony import */ var redux_thunk__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! redux-thunk */ \"./node_modules/redux-thunk/es/index.js\");\n/* harmony import */ var _reducers__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./reducers */ \"./js/store/reducers/index.js\");\n/* harmony import */ var _saveState__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../saveState */ \"./js/saveState.js\");\n/* harmony import */ var lodash_throttle__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash/throttle */ \"./node_modules/lodash/throttle.js\");\n/* harmony import */ var lodash_throttle__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(lodash_throttle__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _utility__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utility */ \"./js/utility.js\");\n\n\n\n\n\n\nvar store = Object(redux__WEBPACK_IMPORTED_MODULE_0__[\"createStore\"])(_reducers__WEBPACK_IMPORTED_MODULE_2__[\"rootReducer\"], Object(redux__WEBPACK_IMPORTED_MODULE_0__[\"applyMiddleware\"])(redux_thunk__WEBPACK_IMPORTED_MODULE_1__[\"default\"]));\nstore.subscribe(lodash_throttle__WEBPACK_IMPORTED_MODULE_4___default()(function () {\n  var state = Object(_saveState__WEBPACK_IMPORTED_MODULE_3__[\"serializeState\"])(store.getState().themeOptions);\n  console.log(_utility__WEBPACK_IMPORTED_MODULE_5__[\"ajax_url\"]);\n  var data = {\n    action: \"glm_theme_options\",\n    theme_options: state\n  };\n  $.ajax({\n    type: \"POST\",\n    url: _utility__WEBPACK_IMPORTED_MODULE_5__[\"ajax_url\"],\n    data: data,\n    success: function success() {}\n  });\n}, 1000));\n\n//# sourceURL=webpack:///./js/store/index.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"store\", function() { return store; });\n/* harmony import */ var redux__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! redux */ \"./node_modules/redux/es/redux.js\");\n/* harmony import */ var redux_thunk__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! redux-thunk */ \"./node_modules/redux-thunk/es/index.js\");\n/* harmony import */ var _reducers__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./reducers */ \"./js/store/reducers/index.js\");\n/* harmony import */ var _saveState__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../saveState */ \"./js/saveState.js\");\n/* harmony import */ var lodash_throttle__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash/throttle */ \"./node_modules/lodash/throttle.js\");\n/* harmony import */ var lodash_throttle__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(lodash_throttle__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _utility__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utility */ \"./js/utility.js\");\n\n\n\n\n\n\nvar store = Object(redux__WEBPACK_IMPORTED_MODULE_0__[\"createStore\"])(_reducers__WEBPACK_IMPORTED_MODULE_2__[\"rootReducer\"], Object(redux__WEBPACK_IMPORTED_MODULE_0__[\"applyMiddleware\"])(redux_thunk__WEBPACK_IMPORTED_MODULE_1__[\"default\"]));\nstore.subscribe(lodash_throttle__WEBPACK_IMPORTED_MODULE_4___default()(function () {\n  var state = Object(_saveState__WEBPACK_IMPORTED_MODULE_3__[\"serializeState\"])(store.getState().themeOptions);\n  console.log(state);\n  var data = {\n    action: \"glm_update_theme_options\",\n    theme_options: state\n  };\n  $.ajax({\n    type: \"POST\",\n    url: _utility__WEBPACK_IMPORTED_MODULE_5__[\"ajax_url\"],\n    data: data,\n    success: function success() {\n      console.log(\"done\");\n    }\n  });\n}, 1000));\n\n//# sourceURL=webpack:///./js/store/index.js?");
 
 /***/ }),
 
@@ -404,7 +404,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) *
 /***/ (function(module, __webpack_exports__, __webpack_require__) {
 
 "use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"themeOptionsReducer\", function() { return themeOptionsReducer; });\n/* harmony import */ var _actionTypes__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../actionTypes */ \"./js/store/actionTypes.js\");\n/* harmony import */ var _actionCreators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../actionCreators */ \"./js/store/actionCreators/index.js\");\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\nvar initialThemeOptionsState = {\n  sticky_header: false\n};\nvar themeOptionsReducer = function themeOptionsReducer() {\n  var themeOptionsState = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialThemeOptionsState;\n  var action = arguments.length > 1 ? arguments[1] : undefined;\n\n  switch (action.type) {\n    case _actionTypes__WEBPACK_IMPORTED_MODULE_0__[\"UPDATE_THEME_OPTIONS_DATA\"]:\n      console.log(action);\n      return Object.assign({}, themeOptionsState, _objectSpread({}, action.state));\n  }\n\n  return themeOptionsState;\n};\n\n//# sourceURL=webpack:///./js/store/reducers/optionsReducers.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"themeOptionsReducer\", function() { return themeOptionsReducer; });\n/* harmony import */ var _actionTypes__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../actionTypes */ \"./js/store/actionTypes.js\");\n/* harmony import */ var _utility__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../utility */ \"./js/utility.js\");\n/* harmony import */ var _index__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../index */ \"./js/store/index.js\");\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(source, true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(source).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\n\n\nvar initialThemeOptionsState = {\n  sticky_header: false\n};\n$.ajax({\n  type: \"POST\",\n  url: _utility__WEBPACK_IMPORTED_MODULE_1__[\"ajax_url\"],\n  data: {\n    action: \"glm_get_theme_options\"\n  },\n  success: function success(data) {\n    var updatedState = JSON.parse(data);\n    _index__WEBPACK_IMPORTED_MODULE_2__[\"store\"].dispatch({\n      type: \"UPDATE_THEME_OPTIONS_DATA\",\n      state: _objectSpread({}, initialThemeOptionsState, {}, updatedState)\n    });\n  },\n  error: function error(_error) {\n    console.log(_error); // initialThemeOptionsState \n  }\n});\nvar themeOptionsReducer = function themeOptionsReducer() {\n  var themeOptionsState = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialThemeOptionsState;\n  var action = arguments.length > 1 ? arguments[1] : undefined;\n\n  switch (action.type) {\n    case _actionTypes__WEBPACK_IMPORTED_MODULE_0__[\"UPDATE_THEME_OPTIONS_DATA\"]:\n      return Object.assign({}, themeOptionsState, _objectSpread({}, action.state));\n  }\n\n  return themeOptionsState;\n};\n\n//# sourceURL=webpack:///./js/store/reducers/optionsReducers.js?");
 
 /***/ }),
 
index 64e7a28..6db081f 100644 (file)
@@ -14,21 +14,26 @@ minimum PHP Version : 5.4
 if ( ! defined( 'ABSPATH' ) ) {
        die();
 }
+require_once 'defines.php';
+use Glm\GlmThemeOptions\Defines;
 
 require_once 'utility.php';
-$theme_utility = new GlmThemeUtility();
+
 if(!class_exists('GlmThemOptions')){
     class GlmThemOptions{
-        
+        private $defines;
+        private $glm_theme_options;
         private static $instance = null;
-        private $theme_utility;
-        
+        private $utility;
+        private $log;
+
         function __construct(){
-            $this->theme_utility = new GlmThemeUtility();
+            $this->utility = new GlmThemeUtility();
+            $this->defines = new Glm\GlmThemeOptions\Defines\Defines();
+            $this->glm_theme_options = $this->defines::$glm_theme_options;
         }
 
         public function get_instance(){
-            $this->theme_utility::write_log(" GET INSTANCE");
             if (self::$instance === null){
                 self::$instance = new GlmThemOptions();
             }else{
@@ -37,35 +42,34 @@ if(!class_exists('GlmThemOptions')){
             return self::$instance;
         }
         private function set_options(){
-            $this->theme_utility::write_log(" SET OPTIONS");
-            if( !get_option("glm_theme_options") ){
-                $this->theme_utility::write_log(get_option("glm_theme_options") );
-                update_option("glm_theme_options", '');
-            }else{
-                $this->theme_utility::write_log("NO NEW THEME OPTIONS");
+            if( !get_option(  $this->glm_theme_options ) ){
+                update_option(  $this->glm_theme_options, 'default options');
             }
         }
         public function glm_update_theme_options() {
             $data = $_REQUEST['theme_options'];
-            $this->theme_utility::write_log($data);
+            if( get_option( $this->glm_theme_options ) ){
+                update_option( $this->glm_theme_options , $data );
+            }
+            // $this->utility::log( get_option($this->glm_theme_options ));
+        }
+        public function glm_get_theme_options() {
+            
+            if( get_option( $this->glm_theme_options ) ){
 
-            // if( get_option('glm_theme_options') ){
-            //     $this->theme_utility::write_log("THEME OPTIONS");
-            //     update_option('glm_theme_options', $data );
-            // }else{
-            //     $this->theme_utility::write_log("NO THEME OPTIONS");
-            // }
+                $data = get_option( $this->glm_theme_options );
+                echo stripslashes($data);
+            }
+            wp_die();
+            // $this->utility::log( get_option($this->glm_theme_options ));
         }
         private function create_ajax_actions(){
             
-            add_action( 'wp_ajax_glm_theme_options', array($this,'glm_update_theme_options') );
+            add_action( 'wp_ajax_glm_update_theme_options', array($this,'glm_update_theme_options') );
+            add_action( 'wp_ajax_glm_get_theme_options', array($this,'glm_get_theme_options') );
             // add_action( 'wp_ajax_nopriv_glm_theme_options', 'glm_update_theme_options' );
-
-          
         }
         public function init(){
-            $this->theme_utility::write_log("FIRE ME");
-            require_once 'defines.php';
             require_once 'enqueue.php';
             require_once 'menus.php';
             $this->set_options();
index 8c5632a..2f1b856 100644 (file)
@@ -1,6 +1,6 @@
 import React, { useState, useEffect, useRef } from 'react';
 import { connect } from 'react-redux';
-import { NavLink } from 'react-router-dom';
+import { Link } from 'react-router-dom';
 import * as SidebarItems from '../manifests';
 import SidebarStyles from '../styles/Sidebar';
 import logo from '../../../assets/images/glm-logo.png';
@@ -28,7 +28,7 @@ const Sidebar = (props) => {
             </div>
             {SidebarItems.options.map( (option,index) => {
 
-                return <NavLink key={`sidebar-${option.label}`} to={{pathname: "/dashboard", state: { option }}}  style={{display: "block",padding: "8px"}} > {option.label} </NavLink>
+                return <Link key={`sidebar-${option.label}`} to={{pathname: "/dashboard", state: { option }}}  style={{display: "block",padding: "8px"}} > {option.label} </Link>
             })}
         </div>
     )
index c289464..45a9fe1 100644 (file)
@@ -22,7 +22,6 @@ const Toggle = (props) => {
             firstRender.current = false;
             return;
         }
-        console.log(props)
         return function cleanup(){
 
         }
index 4e71b9f..4289aa4 100644 (file)
@@ -9,15 +9,19 @@ export const store = createStore(rootReducer, applyMiddleware(thunkMiddleware));
 
 store.subscribe(throttle(()=>{
    const state = serializeState(store.getState().themeOptions);
-   console.log(ajax_url);
+    console.log(state)
    const data = {
-       action: "glm_theme_options",
+       action: "glm_update_theme_options",
        theme_options : state
    }
+
    $.ajax({
         type: "POST",
         url: ajax_url,
         data: data,
-        success: function(){}
+        success: function(){
+            console.log("done")
+        }
     });
+
 }, 1000));
\ No newline at end of file
index b105a7e..faa817a 100644 (file)
@@ -1,14 +1,36 @@
 import { UPDATE_THEME_OPTIONS_DATA } from '../actionTypes';
-import { updateStore } from '../actionCreators';
+import { ajax_url } from '../../utility';
+import { store } from '../index';
 
-const initialThemeOptionsState = {
-    sticky_header : false
-}
+let initialThemeOptionsState = {
+    sticky_header: false
+};
+
+$.ajax({
+    type: "POST",
+    url: ajax_url,
+    data: {action : "glm_get_theme_options"},
+    success: function(data){
+
+        const updatedState = JSON.parse(data);
+        store.dispatch({
+            type: "UPDATE_THEME_OPTIONS_DATA", 
+            state: {
+                ...initialThemeOptionsState,
+                ...updatedState
+            }
+        });
+    },
+    error : function(error){
+        console.log(error);
+        // initialThemeOptionsState 
+    }
+
+});
 
 export const themeOptionsReducer = (themeOptionsState = initialThemeOptionsState, action) => {
     switch(action.type){
-        case UPDATE_THEME_OPTIONS_DATA:
-            console.log(action);
+        case UPDATE_THEME_OPTIONS_DATA :
             return Object.assign({}, themeOptionsState,{
                 ...action.state
             })
index ca3da0d..073fdc8 100644 (file)
@@ -5,7 +5,7 @@ if(!class_exists('GlmThemeUtility')){
         function __construct(){
             
         }
-        public static function write_log($log){
+        public static function log($log){
             if ( true === WP_DEBUG ) {
                 if ( is_array( $log ) || is_object( $log ) ) {
                     error_log( print_r( $log, true ) );