diff --git a/emhttp/plugins/dynamix/Favorites.page b/emhttp/plugins/dynamix/Favorites.page new file mode 100644 index 000000000..f0d70e02d --- /dev/null +++ b/emhttp/plugins/dynamix/Favorites.page @@ -0,0 +1,31 @@ +Menu="Tasks:2" +Type="xmenu" +Code="e970" +--- + +$uri = ['settings','tools']; +foreach($uri as $more) { + $text = "$docroot/languages/$locale/$more.txt"; + if (file_exists($text)) { + // additional translations + $store = "$docroot/languages/$locale/$more.dot"; + if (!file_exists($store)) file_put_contents($store,serialize(parse_lang_file($text))); + $language = array_merge($language,unserialize(file_get_contents($store))); + } +} +?> + diff --git a/emhttp/plugins/dynamix/MyFavorites.page b/emhttp/plugins/dynamix/MyFavorites.page new file mode 100644 index 000000000..5fa582df8 --- /dev/null +++ b/emhttp/plugins/dynamix/MyFavorites.page @@ -0,0 +1,6 @@ +Menu="Favorites" +Type="menu" +Title="My Favorites" +Tag="icon-shop" +--- +
diff --git a/emhttp/plugins/dynamix/Settings.page b/emhttp/plugins/dynamix/Settings.page index c14d1a6ed..35dec0065 100644 --- a/emhttp/plugins/dynamix/Settings.page +++ b/emhttp/plugins/dynamix/Settings.page @@ -1,4 +1,21 @@ Menu="Tasks:4" Type="xmenu" Tabs="false" -Code="e924" \ No newline at end of file +Code="e924" +--- + diff --git a/emhttp/plugins/dynamix/Tools.page b/emhttp/plugins/dynamix/Tools.page index dcdd6d27d..0dc66a90b 100644 --- a/emhttp/plugins/dynamix/Tools.page +++ b/emhttp/plugins/dynamix/Tools.page @@ -1,4 +1,21 @@ Menu="Tasks:90" Type="xmenu" Tabs="false" -Code="e909" \ No newline at end of file +Code="e909" +--- + diff --git a/emhttp/plugins/dynamix/include/MyFavorites.php b/emhttp/plugins/dynamix/include/MyFavorites.php new file mode 100644 index 000000000..e421c88ac --- /dev/null +++ b/emhttp/plugins/dynamix/include/MyFavorites.php @@ -0,0 +1,35 @@ + + +$docroot ??= ($_SERVER['DOCUMENT_ROOT'] ?: '/usr/local/emhttp'); +$permit = ['del','add']; +$action = $_POST['action']??''; +$page = glob("$docroot/plugins/*/{$_POST['page']}.page",GLOB_NOSORT)[0]; +// validate input +if (!$page || !in_array($action,$permit)) exit; + +$file = fopen($page,'r'); +// get current Menu settings +extract(parse_ini_string(fgets($file))); +fclose($file); + +$Menu = str_replace(' MyFavorites','',$Menu); +switch ($action) { +case $permit[0]: + break; +case $permit[1]: + $Menu .= ' MyFavorites'; + break; +} +// update Menu settings +exec("sed -ri '0,/^Menu=\".+\"$/s//Menu=\"$Menu\"/' $page"); diff --git a/emhttp/plugins/dynamix/styles/default-azure.css b/emhttp/plugins/dynamix/styles/default-azure.css index 8ad0b8e19..cbebb929c 100644 --- a/emhttp/plugins/dynamix/styles/default-azure.css +++ b/emhttp/plugins/dynamix/styles/default-azure.css @@ -19,6 +19,7 @@ i.spacing{margin-left:0;margin-right:10px} i.icon{font-size:1.6rem;margin-right:4px;vertical-align:middle} i.title{display:none} i.control{cursor:pointer;color:#909090;font-size:1.8rem} +i.favo{font-size:1.8rem;position:absolute} pre ul{margin:0;padding-top:0;padding-bottom:0;padding-left:28px} pre li{margin:0;padding-top:0;padding-bottom:0;padding-left:18px} big{font-size:1.4rem;font-weight:bold;text-transform:uppercase} diff --git a/emhttp/plugins/dynamix/styles/default-black.css b/emhttp/plugins/dynamix/styles/default-black.css index 9511e0832..28c744868 100644 --- a/emhttp/plugins/dynamix/styles/default-black.css +++ b/emhttp/plugins/dynamix/styles/default-black.css @@ -19,6 +19,7 @@ i.spacing{margin-left:-6px} i.icon{font-size:1.6rem;margin-right:4px;vertical-align:middle} i.title{margin-right:8px} i.control{cursor:pointer;color:#606060;font-size:1.8rem} +i.favo{font-size:1.8rem;position:absolute;margin-left:12px} hr{border:none;height:1px!important;color:#2b2b2b;background-color:#2b2b2b} input[type=text],input[type=password],input[type=number],input[type=url],input[type=email],input[type=date],input[type=file],textarea,.textarea{font-family:clear-sans;font-size:1.3rem;background-color:transparent;border:none;border-bottom:1px solid #e5e5e5;padding:4px 0;text-indent:0;min-height:2rem;line-height:2rem;outline:none;width:300px;margin:0 20px 0 0;box-shadow:none;border-radius:0;color:#f2f2f2} input[type=button],input[type=reset],input[type=submit],button,button[type=button],a.button{font-family:clear-sans;font-size:1.1rem;font-weight:bold;letter-spacing:1.8px;text-transform:uppercase;min-width:86px;margin:10px 12px 10px 0;padding:8px;text-align:center;text-decoration:none;white-space:nowrap;cursor:pointer;outline:none;border-radius:4px;border:none;color:#ff8c2f;background:-webkit-gradient(linear,left top,right top,from(#e22828),to(#ff8c2f)) 0 0 no-repeat,-webkit-gradient(linear,left top,right top,from(#e22828),to(#ff8c2f)) 0 100% no-repeat,-webkit-gradient(linear,left bottom,left top,from(#e22828),to(#e22828)) 0 100% no-repeat,-webkit-gradient(linear,left bottom,left top,from(#ff8c2f),to(#ff8c2f)) 100% 100% no-repeat;background:linear-gradient(90deg,#e22828 0,#ff8c2f) 0 0 no-repeat,linear-gradient(90deg,#e22828 0,#ff8c2f) 0 100% no-repeat,linear-gradient(0deg,#e22828 0,#e22828) 0 100% no-repeat,linear-gradient(0deg,#ff8c2f 0,#ff8c2f) 100% 100% no-repeat;background-size:100% 2px,100% 2px,2px 100%,2px 100%} @@ -209,7 +210,7 @@ div.tab [type=radio]+label~.content{display:none} div.tab [type=radio]:checked+label~.content{display:inline} div.tab [type=radio]+label{position:relative;font-size:1.4rem;letter-spacing:1.8px;padding:4px 10px;margin-right:2px;border-top-left-radius:6px;border-top-right-radius:6px;border:1px solid #6c6c6c;border-bottom:none;background-color:#3c3c3c;opacity:0.5} div.tab [type=radio]+label img{padding-right:4px} -div.Panel{text-align:center;float:left;margin:0 30px 30px 12px;height:8rem} +div.Panel{text-align:center;float:left;margin:0 0 30px 0px;padding-right:60px;height:8rem} div.Panel a{text-decoration:none} div.Panel span{height:42px;display:block} div.Panel:hover .PanelText{text-decoration:underline} diff --git a/emhttp/plugins/dynamix/styles/default-gray.css b/emhttp/plugins/dynamix/styles/default-gray.css index 76bc62c21..8f8e5d3c0 100644 --- a/emhttp/plugins/dynamix/styles/default-gray.css +++ b/emhttp/plugins/dynamix/styles/default-gray.css @@ -19,6 +19,7 @@ i.spacing{margin-left:0;margin-right:10px} i.icon{font-size:1.6rem;margin-right:4px;vertical-align:middle} i.title{display:none} i.control{cursor:pointer;color:#606060;font-size:1.8rem} +i.favo{font-size:1.8rem;position:absolute} pre ul{margin:0;padding-top:0;padding-bottom:0;padding-left:28px} pre li{margin:0;padding-top:0;padding-bottom:0;padding-left:18px} big{font-size:1.4rem;font-weight:bold;text-transform:uppercase} diff --git a/emhttp/plugins/dynamix/styles/default-white.css b/emhttp/plugins/dynamix/styles/default-white.css index 8e6d22393..cfcc80250 100644 --- a/emhttp/plugins/dynamix/styles/default-white.css +++ b/emhttp/plugins/dynamix/styles/default-white.css @@ -19,6 +19,7 @@ i.spacing{margin-left:-6px} i.icon{font-size:1.6rem;margin-right:4px;vertical-align:middle} i.title{margin-right:8px} i.control{cursor:pointer;color:#909090;font-size:1.8rem} +i.favo{font-size:1.8rem;position:absolute;margin-left:12px} hr{border:none;height:1px!important;color:#e3e3e3;background-color:#e3e3e3} input[type=text],input[type=password],input[type=number],input[type=url],input[type=email],input[type=date],input[type=file],textarea,.textarea{font-family:clear-sans;font-size:1.3rem;background-color:transparent;border:none;border-bottom:1px solid #1c1b1b;padding:4px 0;text-indent:0;min-height:2rem;line-height:2rem;outline:none;width:300px;margin:0 20px 0 0;box-shadow:none;border-radius:0;color:#1c1b1b} input[type=button],input[type=reset],input[type=submit],button,button[type=button],a.button{font-family:clear-sans;font-size:1.1rem;font-weight:bold;letter-spacing:1.8px;text-transform:uppercase;min-width:86px;margin:10px 12px 10px 0;padding:8px;text-align:center;text-decoration:none;white-space:nowrap;cursor:pointer;outline:none;border-radius:4px;border:none;color:#ff8c2f;background:-webkit-gradient(linear,left top,right top,from(#e22828),to(#ff8c2f)) 0 0 no-repeat,-webkit-gradient(linear,left top,right top,from(#e22828),to(#ff8c2f)) 0 100% no-repeat,-webkit-gradient(linear,left bottom,left top,from(#e22828),to(#e22828)) 0 100% no-repeat,-webkit-gradient(linear,left bottom,left top,from(#ff8c2f),to(#ff8c2f)) 100% 100% no-repeat;background:linear-gradient(90deg,#e22828 0,#ff8c2f) 0 0 no-repeat,linear-gradient(90deg,#e22828 0,#ff8c2f) 0 100% no-repeat,linear-gradient(0deg,#e22828 0,#e22828) 0 100% no-repeat,linear-gradient(0deg,#ff8c2f 0,#ff8c2f) 100% 100% no-repeat;background-size:100% 2px,100% 2px,2px 100%,2px 100%} @@ -209,7 +210,7 @@ div.tab [type=radio]+label~.content{display:none} div.tab [type=radio]:checked+label~.content{display:inline} div.tab [type=radio]+label{position:relative;font-size:1.4rem;letter-spacing:1.8px;padding:4px 10px;margin-right:2px;border-top-left-radius:6px;border-top-right-radius:6px;border:1px solid #b2b2b2;border-bottom:none;background-color:#e2e2e2;opacity:0.5} div.tab [type=radio]+label img{padding-right:4px} -div.Panel{text-align:center;float:left;margin:0 30px 30px 12px;height:8rem} +div.Panel{text-align:center;float:left;margin:0 0 30px 0px;padding-right:60px;height:8rem} div.Panel a{text-decoration:none} div.Panel span{height:42px;display:block} div.Panel:hover .PanelText{text-decoration:underline}