commit 0955b0c0cc76dab9a9f7702a539bddd508128096 Author: eldov Date: Sun Aug 30 05:16:58 2026 +0200 feat: initial import of the23 theme for lamp-link diff --git a/the23/auth/2fa.php b/the23/auth/2fa.php new file mode 100644 index 0000000..275d447 --- /dev/null +++ b/the23/auth/2fa.php @@ -0,0 +1,65 @@ +
+
+
+
+
+ + + + +

+ +
+
+
+
+

+
+ +
+
+
+ + +
+ +
+
+ +
+ +
+
+
+
+
© .

+
+
+
+
+
+ \ No newline at end of file diff --git a/the23/auth/email2fa.php b/the23/auth/email2fa.php new file mode 100644 index 0000000..a21e762 --- /dev/null +++ b/the23/auth/email2fa.php @@ -0,0 +1,73 @@ +
+
+
+
+
+ + + + +

+ +
+
+
+
+

+
+ +
+
+
+ + +
+
+ +
+
+
+ +
+ +
+
+
+
+ +
+ +
+
+
+
© .

+
+
+
+
+
+ \ No newline at end of file diff --git a/the23/auth/forgot.php b/the23/auth/forgot.php new file mode 100644 index 0000000..0d1e16b --- /dev/null +++ b/the23/auth/forgot.php @@ -0,0 +1,44 @@ +
+
+ +
\ No newline at end of file diff --git a/the23/auth/invite.php b/the23/auth/invite.php new file mode 100644 index 0000000..dec43ea --- /dev/null +++ b/the23/auth/invite.php @@ -0,0 +1,74 @@ +
+
+
+
+
+ + + cookie('darkmode') || themeSettings::isDark() ? ' data-theme="dark"' : '')): ?> + + + + + +

+ +
+
+
+

+

+
+ +
+
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+ +
+ + + + + + +
+
+ + +
+ +
+
+

+ +

+
+
+
© .

+
+
+
+
+
\ No newline at end of file diff --git a/the23/auth/login.php b/the23/auth/login.php new file mode 100644 index 0000000..2e560f7 --- /dev/null +++ b/the23/auth/login.php @@ -0,0 +1,113 @@ + + + cookie('darkmode') || themeSettings::isDark() ? ' data-theme="dark"' : '')): ?> + + + + + +

+ +
+
+
+
+
+
+
+
+

+
+ + + +
+ +
+ +
+ +
+ + +
+
+
+
+ + +
+
+
+ +
+
+
+
+
+ + +
+
+
+ +
+
+
+ +
+ + +
+
+ + +
+ +
+
+
+
+
+
+
© .

+
+
+
+
+
+
+
+

+ +

+ + + +
+
+
+
\ No newline at end of file diff --git a/the23/auth/register.php b/the23/auth/register.php new file mode 100644 index 0000000..b76f3f7 --- /dev/null +++ b/the23/auth/register.php @@ -0,0 +1,110 @@ +
+
+
+
+
+ + + cookie('darkmode') || themeSettings::isDark() ? ' data-theme="dark"' : '')): ?> + + + + + +

+ +
+
+
+

+
+ + +
+ +
+ +
+ +
+ + + + +
+ bioalias): ?> +
+
+ + +
+
+ +
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+ +
+ + + + + + +
+
+ + +
+ +
+
+

+ +

+
+ +
+
© .

+
+
+
+
+
\ No newline at end of file diff --git a/the23/auth/reset.php b/the23/auth/reset.php new file mode 100644 index 0000000..73f72fd --- /dev/null +++ b/the23/auth/reset.php @@ -0,0 +1,49 @@ +
+
+
+
+ +
+
+
\ No newline at end of file diff --git a/the23/blog/author.php b/the23/blog/author.php new file mode 100644 index 0000000..bec0ea1 --- /dev/null +++ b/the23/blog/author.php @@ -0,0 +1,85 @@ +
+
+
+
+
+ +

$authorName]) ?>

+
+
+ <?php echo htmlspecialchars($authorName) ?> +
+

+ +
+ +
+
+
+
+
+
+ +
+
+ +
+
+ +
+ +
+ +
+ +
+ +
+ +
+
+ +
+
+ + + + + + +
+ + +
+
+
+
diff --git a/the23/blog/categories.php b/the23/blog/categories.php new file mode 100644 index 0000000..2ac030c --- /dev/null +++ b/the23/blog/categories.php @@ -0,0 +1,43 @@ +
+
+
+

+

name ?>

+ description): ?> +

description ?>

+ +
+ +
+
+ +
+
+ +
+ +
+ +
+ +
+ +
+ + + + +
+
+ +
+ + title ?> + + +
+ +
+
+
+
\ No newline at end of file diff --git a/the23/blog/index.php b/the23/blog/index.php new file mode 100644 index 0000000..1f30a14 --- /dev/null +++ b/the23/blog/index.php @@ -0,0 +1,57 @@ +
+
+
+

+ +

+
+ +
+
+ +
+
+ +
+ +
+ +
+ +
+ +
+ + + + +
+ + +
+
+
+
\ No newline at end of file diff --git a/the23/blog/menu.php b/the23/blog/menu.php new file mode 100644 index 0000000..9dc852a --- /dev/null +++ b/the23/blog/menu.php @@ -0,0 +1,55 @@ +
+
+
+ +
+
+
+
+ + + + + + + +
+
+
+
+
\ No newline at end of file diff --git a/the23/blog/partial.php b/the23/blog/partial.php new file mode 100644 index 0000000..2085197 --- /dev/null +++ b/the23/blog/partial.php @@ -0,0 +1,24 @@ +
+ image): ?> +
+ + <?php echo $post->title ?> + +
+ +
+ title ?> +
+ avatar): ?> + <?php echo $post->title ?> + + author ?> + categoryid): ?> + categoryid]->name ?> + + date ?> +
+
content ?>
+ +
+
\ No newline at end of file diff --git a/the23/blog/search.php b/the23/blog/search.php new file mode 100644 index 0000000..2d7af9a --- /dev/null +++ b/the23/blog/search.php @@ -0,0 +1,51 @@ +
+
+
+

+ +

+
+ +
+
+ +
+

$q]) ?>

+ +
+ +
+ +
+ +
+ + + + +
+ +
+

$q]) ?>

+ + + + + + + + +
+
+ +
+ + title ?> + + +
+ +
+
+
+
\ No newline at end of file diff --git a/the23/blog/single.php b/the23/blog/single.php new file mode 100644 index 0000000..e9257e3 --- /dev/null +++ b/the23/blog/single.php @@ -0,0 +1,116 @@ +
+
+
+
+
+ + + +

+ title ?> +

+
+ <?php echo $post->author ?> +
+
author) ?>author) ?>
+
+
+ • + date ?> +
+
+ • + content); echo ee('{c} mins read', null, ['c' => $count]) ?> +
+
+
+ <?php echo $post->author ?> +
+
author) ?>author) ?>
+
+
+
+
+
+
+
+
+
+
+ image): ?> + + <?php echo $post->title ?> + + + content ?> +
+
+
+
+
+

+
+ <?php echo htmlspecialchars($post->author) ?> +
+
author) ?>author) ?>
+ +
+ +
+
+
+
+
+ +
+ +
+ +
+
+

+

+
+
+ +
+
+
+ +
+ content = \Core\Helper::truncate($post->content, 150); view('blog.partial',['post' => $post]); ?> +
+ +
+
+ +
+
\ No newline at end of file diff --git a/the23/class/themeSettings.php b/the23/class/themeSettings.php new file mode 100644 index 0000000..fe94cbe --- /dev/null +++ b/the23/class/themeSettings.php @@ -0,0 +1,672 @@ + + * @version 6.0 + * @return void + */ + public static function menu(){ + + $option = config("theme_config"); + + if(!isset($option->homelinks)) return null; + $menu = []; + foreach(explode("\n", $option->homelinks) as $list){ + if(empty($list)) continue; + [$title, $link] = array_map('trim', explode("|", $list)); + + $menu[] = ['link' => $link, 'title' => $title]; + } + return $menu; + } + /** + * Theme Settings + * + * @author GemPixel + * @version 6.0 + * @return void + */ + public static function settings(){ + + if(!$option = config("theme_config")){ + $option = new \stdClass; + } + + if(!isset($option->hero)) $option->hero = ""; + if(!isset($option->siteimage)) $option->siteimage = ""; + if(!isset($option->homeheader)) $option->homeheader = ""; + if(!isset($option->homedescription)) $option->homedescription = ""; + if(!isset($option->customfooter)) $option->customfooter = ""; + if(!isset($option->homelinks)) $option->homelinks = ""; + if(!isset($option->homestyle)) $option->homestyle = "default"; + if(!isset($option->pricing)) $option->pricing = "list"; + if(!isset($option->blog)) $option->blog = "list"; + if(!isset($option->languageselector)) $option->languageselector = "bottom"; + if(!isset($option->menutype)) $option->menutype = "hybrid"; + if(!isset($option->colors)) { + $option->colors = new \stdClass; + $option->colors->primary = '#0088ff'; + $option->colors->primaryalt = '#0065bd'; + $option->colors->secondary = '#22cfff'; + $option->colors->primarybg = '#f7f9fc'; + $option->colors->darkbg = '#030122'; + $option->colors->scrollbar = '#0088ff'; + } + if(!isset($option->colors->body)) $option->colors->body = '#ffffff'; + if(!isset($option->colors->bodycolor)) $option->colors->bodycolor = '#343f52'; + if(!isset($option->homepage)) $option->homepage = 'default'; + + CDN::load('coloris'); + View::push("", 'custom')->toFooter(); + + View::push("", 'custom')->toHeader(); + + CDN::load('simpleeditor'); + + \Core\View::push("", "custom")->toFooter(); + + $content = '
+
+
+
+
+
+ + + + + +
+
'.e('Pre-defined Colors').'
+

'.e('You can choose from pre-defined colors to quickly apply to your theme.').'

+
+
+
+
+
+
+
+
+
+
+ '.e('Ocean Blue').' + '.e('Default').' +
+
+
+
+
+
+
+
+
+
+
+
+
+ '.e('Coral Sunset').' + '.e('Warm').' +
+
+
+
+
+
+
+
+
+
+
+
+
+ '.e('Royal Purple').' + '.e('Elegant').' +
+
+
+
+
+
+
+
+
+
+
+
+
+ '.e('Forest Green').' + '.e('Natural').' +
+
+
+
+
+
+
+
+
+
+
+
+
+ '.e('Midnight Dark').' + '.e('Dark').' +
+
+
+
+
+
+
+
+
+
+
+
+
+ '.e('Vibrant Pink').' + '.e('Bold').' +
+
+
+
+
+ +
'.e('Theme Colors').'
+

'.e('You can customize colors for front pages (home, pricing, blog etc). Some colors are already preset. You can either use colors from the palette (example #1 with #1 in all options) or mix and match. You can also use your own colors. After saving settings, if you do not see changes, you need to release browser cache. If you are using Cloudflare, you will need to purge cache as well.').'

+
+
+ +
+
+
+ +
+
+
+ +
+
+
+ +
+
+
+ +
+
+
+ +
+
+
+ +
+
+
+ +
+ +
+
+
+
+
+
+ + + +
+
+
+ + +
+
+
+ + +
+
+
+ + +
+ +
+
+
+
+
+
+
+ +
+
+ '.(!empty($option->hero) ? '

':"").' +
+
+ '.(!empty($option->hero) ? '' : '').' + +

'.e('This will replace the default hero image that comes shipped with the script. JPG or PNG. 500 kb max. Recommended size: 560x710').'

+
+
+ + +

'.e('This will replace the home main header right before the shortener form. If you leave it empty, the site title will be shown.').'

+
+
+ + +

'.e('This will replace the home main description right before the shortener form. If you leave it empty, the site description will be shown.').'

+
+
+ + +

'.e('Choose which page to display when visitors go to your site root (homepage).').'

+
+
+
+
+ +
+
+ '.(!empty($option->siteimage) ? '

'.e('Remove').'

':"").' +
+
+ '.(!empty($option->siteimage) ? '' : '').' + +

'.e('This will be used as default OG image unless override by pages.').'

+
+
+ + +

'.e('You can add custom links to the menu using the following format (one per line): TITLE|LINK').'

+
+
+ + +

'.e('You can add custom footer to the page. This will be shown at the bottom of the page.').'

+
+ '.csrf().' + + +
+
+
+
+
+
Help
+
+

HTML Usage

+

You can use the following HTML elements: '.htmlentities("


").'

+ +

Translating Strings

+

If you add a new title or a new description, you can still translate them to any language by simply adding it via the language manager.

+ +

Auto Mode

+

If you choose the Auto Mode, the color scheme will change based on the user browser or device preference. + +

Home Header

+

You can add your custom header and description for the homepage. To use the typing animation use the following format:

+ <span class="gradient-primary clip-text" data-toggle="typed" data-list="Links,Bio Pages, QR Codes"></span> +
+
+
+
Menu Link
+
+

You can add custom links to the menu using the following format (one per line): TITLE|LINK

+ +

Example

+
Support|https://support.gempixel.com
Blog|https://gempixel.com/blog
+ +

You can add as much as you want however you need to make sure it does not break the template

+
+
+
+
'; + return $content; + } + /** + * Update + * + * @author GemPixel + * @version 6.0 + * @return void + */ + public function update(){ + + \Gem::addMiddleware('DemoProtect'); + + $option = config("theme_config"); + + $request = new \Core\Request; + + $data = []; + + $data['hero'] = $option->hero ?? ''; + $data['siteimage'] = $option->siteimage ?? ''; + $data['homeheader'] = Helper::clean($request->homeheader); + $data['homedescription'] = $request->homedescription; + $data['customfooter'] = $request->customfooter; + $data['homestyle'] = Helper::clean($request->homestyle, 3); + $data['homepage'] = Helper::clean($request->homepage, 20); + if(!in_array($data['homepage'], ['default', 'bio', 'link', 'qr'])) $data['homepage'] = 'default'; + $data['homelinks'] = Helper::clean($request->homelinks, 3); + $data['homecolor'] = Helper::clean($request->homecolor, 3); + $data['pricing'] = Helper::clean($request->pricing, 3); + $data['languageselector'] = Helper::clean($request->languageselector, 3); + $data['menutype'] = Helper::clean($request->menutype, 3); + $data['blog'] = Helper::clean($request->blog, 3); + + $data['colors'] = [ + 'body' => '#ffffff', + 'body-color' => '#343f52', + 'primary' => '#0088ff', + 'primaryalt' => '#0065bd', + 'secondary' => '#22cfff', + 'primarybg' => '#f7f9fc', + 'darkbg' => '#030122', + 'scrollbar' => '#0088ff' + ]; + + $data['cssname'] = strtolower(Helper::rand(12)); + + foreach($request->colors as $name => $color){ + if(strlen(trim($color)) == 7) $data['colors'][$name] = trim(clean($color)); + } + + if($request->remove_logo){ + if(isset($option->hero) && !empty($option->hero) && file_exists(appConfig('app.storage')['uploads']['path'].'/'.$option->hero)){ + unlink(appConfig('app.storage')['uploads']['path'].'/'.$option->hero); + } + $data['hero'] = null; + } + + if($image = $request->file('hero')){ + + if(!$image->mimematch || !in_array($image->ext, ['jpg', 'png'])) return Helper::redirect()->back()->with('danger', e('The custom image is not valid. Only a JPG or PNG are accepted.')); + + if($image->sizekb > 500) return Helper::redirect()->back()->with('danger', e('Custom image must be either a PNG or a JPEG (Max 500kb).')); + + $filename = Helper::rand(6)."_hero_".$image->name; + + if(isset($option->hero) && !empty($option->hero) && file_exists(appConfig('app.storage')['uploads']['path'].'/'.$option->hero)){ + unlink(appConfig('app.storage')['uploads']['path'].'/'.$option->hero); + } + + $request->move($image, appConfig('app.storage')['uploads']['path'], $filename); + $data['hero'] = $filename; + + } + + if($request->remove_siteimage){ + if(isset($option->siteimage) && !empty($option->siteimage) && file_exists(appConfig('app.storage')['uploads']['path'].'/'.$option->siteimage)){ + unlink(appConfig('app.storage')['uploads']['path'].'/'.$option->siteimage); + } + $data['siteimage'] = null; + } + + if($image = $request->file('siteimage')){ + + if(!$image->mimematch || !in_array($image->ext, ['jpg', 'png'])) return Helper::redirect()->back()->with('danger', e('The custom image is not valid. Only a JPG or PNG are accepted.')); + + if($image->sizekb > 500) return Helper::redirect()->back()->with('danger', e('Custom image must be either a PNG or a JPEG (Max 500kb).')); + + $filename = Helper::rand(6)."_siteimage_".$image->name; + + if(isset($option->siteimage) && !empty($option->siteimage) && file_exists(appConfig('app.storage')['uploads']['path'].'/'.$option->siteimage)){ + unlink(appConfig('app.storage')['uploads']['path'].'/'.$option->siteimage); + } + + $request->move($image, appConfig('app.storage')['uploads']['path'], $filename); + $data['siteimage'] = $filename; + + } + + if($request->homestyle == "darkmode"){ + $request->cookie('darkmode', 1); + } else { + $request->cookie('darkmode', 1, -3600); + } + + $setting = DB::settings()->where('config', 'theme_config')->first(); + + $setting->var = json_encode($data); + $setting->save(); + + self::cssVariables($data['colors'], $data['cssname']); + + return Helper::redirect()->back()->with('success', e('Settings are successfully saved.')); + } + /** + * Generate CSS variables + * + * @author GemPixel + * @version 7.0 + * @param array $variables + * @return void + */ + private static function cssVariables(array $variables, string $cssname){ + + $variables['primarybgrgb'] = implode(', ', sscanf($variables['primarybg'], "#%02x%02x%02x")); + $variables['darkbgrgb'] = implode(', ', sscanf($variables['darkbg'], "#%02x%02x%02x")); + $variables['liquidrgb'] = implode(', ', array_merge(sscanf($variables['body'], "#%02x%02x%02x"), [0.8])); + $variables['darkbg'] = implode(', ', sscanf($variables['darkbg'], "#%02x%02x%02x")); + + $data = ":root{--body: {$variables['body']};--body-color: {$variables['body-color']};--hamburger-color: {$variables['body-color']};--bs-primary: {$variables['primary']};--bs-primary-alt: {$variables['primaryalt']};--bs-secondary: {$variables['secondary']};--bg-primary: {$variables['primarybg']};--bg-secondary: {$variables['secondary']};--bs-primary-rgb: {$variables['primarybgrgb']};--scrollbar-color: {$variables['scrollbar']};--bg-header: rgba({$variables['liquidrgb']});--bs-link-color: var(--bs-primary);--bs-link-hover-color: var(--bs-primary-alt);--bs-dark-rgb:{$variables['darkbgrgb']};--bg-liquid: rgba({$variables['liquidrgb']});--bs-dark-rgb: {$variables['darkbg']};}"; + + $config = config("theme_config"); + if(isset($config->cssname) && $config->cssname != $cssname){ + if(file_exists(PUB.'/content/'.$config->cssname.'.css')){ + unlink(PUB.'/content/'.$config->cssname.'.css'); + } + } + if($css = fopen(PUB.'/content/'.$cssname.'.css', 'w')){ + fwrite($css, $data); + fclose($css); + } + } + /** + * Theme Config + * + * @author GemPixel + * @version 6.3 + * @param string $name + * @return void + */ + public static function config(string $name, $is = null, $set = null, $default = null){ + + $config = config("theme_config"); + + if($name == 'title'){ + return (isset($config->homeheader) && $config->homeheader ? e($config->homeheader) : config('title')); + } + + if($name == 'description'){ + return (isset($config->homedescription) && $config->homedescription ? e($config->homedescription) : e(config('description'))); + } + + if($name == 'homecolor'){ + if(isset($config->homecolor) && $config->homecolor->type == 'custom' && $config->homestyle != 'darkmode' && !request()->cookie('darkmode')){ + return 'style="background: linear-gradient(220.55deg, '.$config->homecolor->c2.' 0%, '.$config->homecolor->c1.' 100%) !important;"'; + } + return null; + } + + if($name == "homestyle") { + + if(!isset($config->homestyle)) return $default; + + if( $config->homestyle == $is && !request()->cookie('darkmode') && $set) return $set; + + if( $config->homestyle == $is) return true; + + return $default; + } + + if($name == "pricing") { + if(isset($config->pricing)){ + if($config->pricing == $is) return $set; + return $config->pricing; + } + return 'list'; + } + + if($is) return isset($config->{$name}) && $config->{$name} == $is; + + return $config->{$name} ?? null; + } + /** + * Is Dark Mode or Dark Theme + * + * @author GemPixel + * @version 6.6 + * @param [type] $return + * @return boolean + */ + public static function isDark($return = null){ + + $config = config("theme_config"); + + $isdark = request()->cookie('darkmode') || (isset($config->homestyle) && $config->homestyle == 'darkmode'); + + return $return && $isdark ? $return : $isdark; + } +} \ No newline at end of file diff --git a/the23/config.json b/the23/config.json new file mode 100644 index 0000000..77a5c0a --- /dev/null +++ b/the23/config.json @@ -0,0 +1,15 @@ +{ + "name": "The23", + "version": "1.0", + "author": "GemPixel", + "link": "https://gempixel.com", + "date": "01/06/2023", + "settings": true, + "child": false, + "thumbnail": "screenshot.png", + "include":[ + "class/themeSettings.php", + "functions.php" + ], + "assets":[] +} \ No newline at end of file diff --git a/the23/email.php b/the23/email.php new file mode 100644 index 0000000..b621488 --- /dev/null +++ b/the23/email.php @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/the23/errors/404.php b/the23/errors/404.php new file mode 100644 index 0000000..02a1257 --- /dev/null +++ b/the23/errors/404.php @@ -0,0 +1,63 @@ + +cookie('darkmode') || themeSettings::isDark() ? ' data-theme="dark"' : '') ?>> + + + + + + + + + + enabled): ?> + + + cssname)): ?> + cssname.'.css') ?>" id="stylesheet"> + + + + + enabled): ?> + + + + + + + + + +
+
+
+ + + + +

+ +
+ +
404
+

+ +

+ + + + + + +
+
+
+ + + + + + + \ No newline at end of file diff --git a/the23/errors/disabled.php b/the23/errors/disabled.php new file mode 100644 index 0000000..f595052 --- /dev/null +++ b/the23/errors/disabled.php @@ -0,0 +1,61 @@ + +cookie('darkmode') || themeSettings::isDark() ? ' data-theme="dark"' : '') ?>> + + + + + + + + + + enabled): ?> + + + cssname)): ?> + cssname.'.css') ?>" id="stylesheet"> + + + + + enabled): ?> + + + + + + + + + +
+
+
+ + + + +

+ +
+ +
+

+ +

+ + + + +
+
+
+ + + + + + + \ No newline at end of file diff --git a/the23/errors/expired.php b/the23/errors/expired.php new file mode 100644 index 0000000..39825f1 --- /dev/null +++ b/the23/errors/expired.php @@ -0,0 +1,60 @@ + +cookie('darkmode') || themeSettings::isDark() ? ' data-theme="dark"' : '') ?>> + + + + + + + + + + enabled): ?> + + + cssname)): ?> + cssname.'.css') ?>" id="stylesheet"> + + + + + enabled): ?> + + + + + + + + + +
+
+
+ + + + +

+ +
+ +
+

+ +

+ + + +
+
+
+ + + + + + + \ No newline at end of file diff --git a/the23/functions.php b/the23/functions.php new file mode 100644 index 0000000..4f3eb6f --- /dev/null +++ b/the23/functions.php @@ -0,0 +1,28 @@ +name('admin.themes.update')->middleware('Auth@admin'); + +Plugin::register('admin.theme.getoptions', [themeSettings::class, 'settings']); + +Plugin::register('homemenu', [themeSettings::class, 'menu']); + +if(isset(config('theme_config')->siteimage) && config('theme_config')->siteimage){ + \Core\View::set('image', uploads(config('theme_config')->siteimage)); +} \ No newline at end of file diff --git a/the23/gates/custom.php b/the23/gates/custom.php new file mode 100644 index 0000000..75c05cd --- /dev/null +++ b/the23/gates/custom.php @@ -0,0 +1,25 @@ +
+
+
+ +
+
+
+ +
+
+ data->title ?> +

data->message ?>

+

+
+
+

0

+
+
+
+
+ has('poweredby')): ?> + + +
+
\ No newline at end of file diff --git a/the23/gates/domain.php b/the23/gates/domain.php new file mode 100644 index 0000000..022c4ae --- /dev/null +++ b/the23/gates/domain.php @@ -0,0 +1,21 @@ +
+
+
+
+ Great! +
+
+
+

domain name is now successfully pointed to our server. You can now start using it from the platform and shorten branded links with your own domain name.") ?>

+

+

+
+

+ " class="btn btn-secondary btn-round"> +    + " class="btn btn-primary btn-round"> +

+
+
+
+
\ No newline at end of file diff --git a/the23/gates/frame.php b/the23/gates/frame.php new file mode 100644 index 0000000..5c8ddf4 --- /dev/null +++ b/the23/gates/frame.php @@ -0,0 +1,20 @@ +
+
+ + +
+ +
+
+
+ \ No newline at end of file diff --git a/the23/gates/list.php b/the23/gates/list.php new file mode 100644 index 0000000..83f45cd --- /dev/null +++ b/the23/gates/list.php @@ -0,0 +1,35 @@ +
+
+
+ + + + + +

name ?>

+
+ $value): ?> + + + +
+ +
+
+ +
\ No newline at end of file diff --git a/the23/gates/media.php b/the23/gates/media.php new file mode 100644 index 0000000..9ccfa7e --- /dev/null +++ b/the23/gates/media.php @@ -0,0 +1,46 @@ +
+
+
+
+
+
+ embed ?> +
+
+
+
meta_title ?>
+
+
+ click+1 ?> + +
+
+

+ meta_description ?> +

+
+ +
+ +
+
+
\ No newline at end of file diff --git a/the23/gates/password.php b/the23/gates/password.php new file mode 100644 index 0000000..e213437 --- /dev/null +++ b/the23/gates/password.php @@ -0,0 +1,32 @@ +
+
+
+
+
+
+
+
+
+

+
+ + +
+ +
+
+ + +
+
+
+ +
+
+
+
+
+
+
+
+
\ No newline at end of file diff --git a/the23/gates/splash.php b/the23/gates/splash.php new file mode 100644 index 0000000..92cd782 --- /dev/null +++ b/the23/gates/splash.php @@ -0,0 +1,39 @@ +
+
+ +
+
+
+ +
+
+

+ meta_title)): ?> + meta_title ?> + + + +

+

+ meta_description)): ?> + meta_description ?> + +

+
+
+
+ +
+
+ +
+
+
+

+ +

+
+
+
+
+
\ No newline at end of file diff --git a/the23/help/category.php b/the23/help/category.php new file mode 100644 index 0000000..11b6564 --- /dev/null +++ b/the23/help/category.php @@ -0,0 +1,46 @@ +
+
+ + +
+ icon) && $category->icon): ?> +
+ iconstyle) && $category->iconstyle == 'emoji'): ?> + icon ?> + + + +
+ +
+

title ?>

+
+

description ?>

+
+
+
+
+ +
+
+
+ +
+
+ answer), 100) ?> +
+ \Core\Helper::timeago($article->created_at)]) ?> +
+
+ +
+ +
+
\ No newline at end of file diff --git a/the23/help/index.php b/the23/help/index.php new file mode 100644 index 0000000..c03aec5 --- /dev/null +++ b/the23/help/index.php @@ -0,0 +1,55 @@ +
+
+ +
+

+
+ + +
+

+
+
+ +
+
+
+ +
+
+ answer), 100) ?> +
+ \Core\Helper::timeago($article->created_at)]) ?> +
+
+ +
+
+
\ No newline at end of file diff --git a/the23/help/search.php b/the23/help/search.php new file mode 100644 index 0000000..4a32e92 --- /dev/null +++ b/the23/help/search.php @@ -0,0 +1,36 @@ +
+
+ $q]) ?> + +
+

"{$q}"]) ?>

+
+ +
+ +
+
+
+ +
+
+ answer), 100) ?> +
+ \Core\Helper::timeago($article->created_at)]) ?> +
+
+ +
+ + + + +
+
\ No newline at end of file diff --git a/the23/help/single.php b/the23/help/single.php new file mode 100644 index 0000000..9a32665 --- /dev/null +++ b/the23/help/single.php @@ -0,0 +1,39 @@ +
+
+ +
+
+ +
+
+

question ?>

+ \Core\Helper::dtime($article->created_at, 'F d, Y')]) ?> +
+ answer ?> +
+
+ +
+
+ +
+ +
+
+
+
+ + question ?> + + + +
+
+
+
\ No newline at end of file diff --git a/the23/help/top.php b/the23/help/top.php new file mode 100644 index 0000000..ffd4989 --- /dev/null +++ b/the23/help/top.php @@ -0,0 +1,18 @@ +
+
+
+

+
+
+ + + + + + + +
+
+
+
+
\ No newline at end of file diff --git a/the23/index.php b/the23/index.php new file mode 100644 index 0000000..c2c2068 --- /dev/null +++ b/the23/index.php @@ -0,0 +1,828 @@ +
+
+ +
+
+ users) && $count->users): ?> + + users > 100): ?> + ''.$count->users.' '.e('customers').'']) ?> + + ''.e('thousands of users').'']) ?> + + + +

+ homeheader) && !empty(config('theme_config')->homeheader) ? config('theme_config')->homeheader : ee('Intuitive, Secure
& Dynamic').'
' ?>
+

+

+ homedescription) && !empty(config('theme_config')->homedescription) ? config('theme_config')->homedescription : e('Boost your campaigns by creating dynamic Links, QR codes and Bio Pages and get instant analytics.') ?> +

+ +
+
+ " name="url" id="url"> +
+ + + + + +
+
+ + +
+
+
+ + " autocomplete="off"> +
+
+
+
+ + " autocomplete="off"> +
+
+
+ + +
+
+
+
+
+

+ +
+
+
+ where('free', '1')->where('status', '1')->first()): ?> + +

+

    +
  • +
  • +
  • +
+

+ + whereNotEqual('trial_days', '0')->first()): ?> + +

+

    +
  • +
  • +
  • +
+

+ + + + +
+
+
+ hero) && !empty($themeconfig->hero)): ?> + <?php echo config(" class="img-fluid mw-lg-120 rounded-top zindex-100"> + + +
+
+
+
+
+
+ +
+
+ +
+
+ M +
+
+
+
+
+
+

+ +% +

+ M +
+ K +
+
+
+
+
+
+ +
+
+
+
+
+
+
+ + + +
+
+
+
+
+
+ + + +
+
+
+
+
+ +
+
+
+
+
+
+
+
+
+

Supercharge your productivity') ?>

+ +
+
+
+
+
+
+ +
+ + +
+
+

+

+ +

+ +
+
+
+
+
+
+ +
+
+ + +
+ +
+
+

+

+ +

+ +
+
+
+
+
+
+
+
+ module('circle')->eye('circle', 'rounded')->color('rgb(0,0,0)', 'rgb(255,255,255)','rgb(255,255,0)', 'rgb(255,0,255)')->format('svg')->string() ?> +
+ +
+
+
+

+

+ +

+ +
+
+
+
+
+
+
+
+
+
+
+ + + +

+ +

+

+ +

+
    +
  • +
    +
    + + + +
    +
    + +

    +
    +
    +
  • +
  • +
    +
    + + + +
    +
    + +

    +
    +
    +
  • +
  • +
    +
    + + + +
    +
    + +

    +
    +
    +
  • +
+ +
+
+
+
+
+
+
+
+
+ + + + +
+
+
+
+
+ + + + +
+
+
+
+
+ + + + +
+
+
+
+
+ + + + +
+
+
+
+
+
+
+
+
+
+
+ + + +

+ +

+

+ +

+ +
+
+
+
smart
+ +
+

+
+ +
+ <?php echo $item['title'] ?> +

+
+ +
+
+
+
+
+
+
+

you'll ever need") ?>

+

+
+ +
+
+
+
+
+
+
+ <?php ee('New York, United States') ?> +
+
+
+ +
+
+
+ $numbers[0]]) ?> +
+
+
+
+
+ <?php ee('New York, United States') ?> +
+
+
+ +
+
+
+ $numbers[1]]) ?> +
+
+
+
+
+ <?php ee('New York, United States') ?> +
+
+
+ +
+
+
+ $numbers[2]]) ?> +
+
+
+
+
+ + + +

+ +

+

+ +

+ +
+
+
+
+
+
+
+ +
(3/5)
+
+ <?php ee('Invite your teammates & work together') ?> +
+
+
+ jane.doe@ +
+
+
+
+ <?php ee('Invite your teammates & work together') ?> +
+
+
+ barry.tone@ +
+
+
+ +
+
+
+ <?php ee('Invite your teammates & work together') ?> +
+
+
+ john.doe@ +
+
+
+
+
+
+
+ + + +

+ +

+

+ +

+ +
+
+
+
+
+
+
+
+
+
+ Slack" class="icon-md bg-white shadow-sm p-2 rounded-circle"> +

Slack

+
+
+ Zapier" class="icon-md bg-white shadow-sm p-2 rounded-circle"> +

Zapier

+
+
+ Google Tag Manager" class="icon-md bg-white shadow-sm p-2 rounded-circle"> +

Google Tag Manager

+
+
+ Facebook Pixels" class="icon-md bg-white shadow-sm p-2 rounded-circle"> +

Facebook

+
+
+
+
+ Bing" class="icon-md bg-white shadow-sm p-2 rounded-circle"> +

WordPress

+
+
+ Bing" class="icon-md bg-white shadow-sm p-2 rounded-circle"> +

Shortcuts

+
+
+ +

X

+
+
+ Snapchat" class="icon-md bg-white shadow-sm p-2 rounded-circle"> +

Snapchat

+
+
+
+
+
+
+

+

+ +
+
+
+
+
+
+ Bing" class="icon-md bg-white shadow-sm p-2 rounded-circle"> +

Bing

+
+
+ Reddit" class="icon-md bg-white shadow-sm p-2 rounded-circle"> +

Reddit

+
+
+ Google Analytics" class="icon-md bg-white shadow-sm p-2 rounded-circle"> +

Google Analytics

+
+
+ LinkedIn" class="icon-md bg-white shadow-sm p-2 rounded-circle"> +

LinkedIn

+
+
+
+
+ Pinterest" class="icon-md bg-white shadow-sm p-2 rounded-circle"> +

Pinterest

+
+
+ Quora" class="icon-md bg-white shadow-sm p-2 rounded-circle"> +

Quora

+
+
+ TikTok" class="icon-md bg-white shadow-sm p-2 rounded-circle"> +

TikTok

+
+
+ Adroll" class="icon-md bg-white shadow-sm p-2 rounded-circle"> +

Adroll

+
+
+
+
+
+
+
+
+
+ +

+

+ +

+
+
+
+
+
+
+ +

+

+ +

+
+
+
+
+
+
+
+
+
+ +
+
+
+
+

+

+
+
+
+ +
+ +
+
+

testimonial ?>

+
+
+ avatar) && file_exists(appConfig('app')['storage']['avatar']['path'].'/'.$testimonial->avatar)) $testimonial->avatar = uploads($testimonial->avatar, 'avatar');else{if($testimonial->email){$testimonial->avatar = 'https://www.gravatar.com/avatar/'.md5(trim($testimonial->email)).'?s=64&d=identicon';}} ?> + avatar ? ''.$testimonial->name.'': '' ?> +
+
+ name ?> job ? ''.$testimonial->job.'' : '' ?> +
+
+
+
+ +
+ +
+
+
+ + +
+
+
+
+

the numbers
do the talking") ?>.

+
+
+
+
+
+

+
+ links ?> + + +
+

+
+
+
+
+

+
+ clicks ?> + + +
+

+
+
+
+
+
+
+

+
+ users ?> + + +
+

+
+
+ +
+
+
+
+
+ +
+
+
+
+
+

+

+
+
+ +
+
+
+
+
+ + + \ No newline at end of file diff --git a/the23/layouts/api.php b/the23/layouts/api.php new file mode 100644 index 0000000..161f641 --- /dev/null +++ b/the23/layouts/api.php @@ -0,0 +1,61 @@ + + cookie('darkmode') || themeSettings::isDark() ? ' data-theme="dark" class="c_darkmode"' : '') ?>> + + + + + + + + + + enabled): ?> + + + cssname)): ?> + cssname.'.css') ?>" id="stylesheet"> + + + + + + + + + + + + + + + 'full']) ?> + + + + + + + + + enabled): ?> + + + + + + + + async src='https://www.googletagmanager.com/gtag/js?id='> + >window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', ''); + + enabled): ?> + > + $('head').append('').append(''); + + + + \ No newline at end of file diff --git a/the23/layouts/auth.php b/the23/layouts/auth.php new file mode 100644 index 0000000..74a9324 --- /dev/null +++ b/the23/layouts/auth.php @@ -0,0 +1,55 @@ + +cookie('darkmode') || themeSettings::isDark() ? ' data-theme="dark" class="c_darkmode"' : '') ?>> + + + + + + + + + + enabled): ?> + + + cssname)): ?> + cssname.'.css') ?>" id="stylesheet"> + + + + + enabled): ?> + + + + + + + + + > + + + enabled): ?> + + + + + + + + + + + async src='https://www.googletagmanager.com/gtag/js?id='> + >window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', ''); + + enabled): ?> + > + $('head').append('').append(''); + + + + diff --git a/the23/layouts/main.php b/the23/layouts/main.php new file mode 100644 index 0000000..91fe3e1 --- /dev/null +++ b/the23/layouts/main.php @@ -0,0 +1,65 @@ + +cookie('darkmode') || themeSettings::isDark() ? ' data-theme="dark" class="c_darkmode"' : '') ?>> + + + + + + + + + + enabled): ?> + + + cssname)): ?> + cssname.'.css') ?>" id="stylesheet"> + + + + + enabled): ?> + + + + + + + + + + + + + + + + + + + + + + + enabled): ?> + + + + + + + + + async src='https://www.googletagmanager.com/gtag/js?id='> + >window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', ''); + + enabled): ?> + > + $('head').append('').append(''); + + + + + \ No newline at end of file diff --git a/the23/layouts/stats.php b/the23/layouts/stats.php new file mode 100644 index 0000000..d8adb04 --- /dev/null +++ b/the23/layouts/stats.php @@ -0,0 +1,68 @@ + +cookie('darkmode') || themeSettings::isDark() ? ' data-theme="dark" class="c_darkmode"' : '') ?>> + + + + + + + + + + enabled): ?> + + + cssname)): ?> + cssname.'.css') ?>" id="stylesheet"> + + + + + enabled): ?> + + + + + + + + + + +
+
+ +
+
+ + + + + + + + + + + enabled): ?> + + + + + + + + + async src='https://www.googletagmanager.com/gtag/js?id='> + >window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments);}gtag('js', new Date());gtag('config', ''); + + enabled): ?> + > + $('head').append('').append(''); + + + + + \ No newline at end of file diff --git a/the23/maintenance.php b/the23/maintenance.php new file mode 100644 index 0000000..a99fd06 --- /dev/null +++ b/the23/maintenance.php @@ -0,0 +1,28 @@ +
+
+
+ + + + +

+ +
+ +
+

+ +

+ + + + + + + + + + +
+
+
\ No newline at end of file diff --git a/the23/pages/affiliate.php b/the23/pages/affiliate.php new file mode 100644 index 0000000..6b6dc43 --- /dev/null +++ b/the23/pages/affiliate.php @@ -0,0 +1,50 @@ +
+ +
+ +
+

"".(isset($affiliate->type) && $affiliate->type == 'fixed' ? '$'.$affiliate->rate : $affiliate->rate.'%').""]) ?>

+

(isset($affiliate->type) && $affiliate->type == 'fixed' ? '$'.$affiliate->rate : $affiliate->rate.'%')]) ?>

+ + + + + +
+
+
+
+
+
+ where('category', 'affiliate')->find()): ?> +
+

+

terms ?>

+ +
+
+
+ $faq): ?> + +
+
+ +
+
+ +
+
+ answer)) ?> +
+
+
+
+ +
+
+ +
+
+
\ No newline at end of file diff --git a/the23/pages/api.php b/the23/pages/api.php new file mode 100644 index 0000000..f12a554 --- /dev/null +++ b/the23/pages/api.php @@ -0,0 +1,415 @@ +
+
+
+
+
+ + + + + + + admin): ?> + + Admin + + + + + + + + + $el): ?> +
+ + + + '.e('Admin').'' : '' ?> + +
+
+ $title): ?> + + + + +
+ +
+
+
+
+
+
+

+
+
+
+
+

+
+
+
+ has('api') && \Core\Auth::user()->teamPermission('api.create')): ?> + + +
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+
+
+ cURL + PHP + Node.js + Python + C# +
+ +
+
+
+
+
+
 "'.route('api.account.get').'",
+                                        CURLOPT_RETURNTRANSFER => true,
+                                        CURLOPT_MAXREDIRS => 2,
+                                        CURLOPT_TIMEOUT => 10,
+                                        CURLOPT_FOLLOWLOCATION => true,
+                                        CURLOPT_CUSTOMREQUEST => "POST",
+                                        CURLOPT_HTTPHEADER => [
+                                            "Authorization: Bearer '.$token.'",
+                                            "Content-Type: application/json",
+                                        ],
+                                    ));
+
+                                    $response = curl_exec($curl);') ?>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ admin): ?> +
+
+
+
+
+
+
+
+

+
    +
  1. +
  2. +
  3. +
+
+ +
+
+

+
    +
  • +
  • +
+
+ +
+
+ +
+
+

+ +
GET ?clientid=YOUR_CLIENT_ID&redirect=YOUR_REDIRECT_URI
+ +

+
    +
  • clientid:
  • +
  • redirect:
  • +
+
+ +
+
+

+ +
YOUR_REDIRECT_URI?code=AUTHORIZATION_CODE
+
+ +
+
+

+ +
POST 
Content-Type: application/json
{
"code": "AUTHORIZATION_CODE",
"secret": "YOUR_CLIENT_SECRET"
}
+ +

+
{
"error": false,
"access_token": "YOUR_ACCESS_TOKEN",
"expires_at": 1234567890
}
+
+ +
+
+

+ +
GET 
Authorization: Bearer YOUR_ACCESS_TOKEN
+ +
+ +
+
+ +
+
+
+
+ +
+
+
+
+
+
+

$rate[0], 'y' => $rate[1]]) ?>

+ +

+
+
+
+
+
X-RateLimit-Limit: 
X-RateLimit-Remaining:
X-RateLimit-Reset: TIMESTAMP
+
+
+
+
+
+
+
+
+
+

+
+
+
+
+
+
+
+
+ $el): ?> +
+

+ + + +

+

+ $data): ?> +
+
+
+
+
+
+
+ +
+

+ +
+ + + + $desc): ?> + + + + + + +
+
+ +
+
+
+
+
+
+ cURL + PHP + Node.js + Python + C# +
+ +
+
+
+
+
+
 "'.$data['route'].'",
+                                                CURLOPT_RETURNTRANSFER => true,
+                                                CURLOPT_MAXREDIRS => 2,
+                                                CURLOPT_TIMEOUT => 10,
+                                                CURLOPT_FOLLOWLOCATION => true,
+                                                CURLOPT_CUSTOMREQUEST => "'.$data['method'].'",
+                                                CURLOPT_HTTPHEADER => [
+                                                    "Authorization: Bearer '.$token.'",
+                                                    "Content-Type: application/json",
+                                                ],
+                                                '.(
+                                                    $data['code'] ? 'CURLOPT_POSTFIELDS => 
+                                                    \''.str_replace("\n","\n\t", json_encode($data['code'], JSON_PRETTY_PRINT)).'\',' : ''
+                                                ).'
+                                            ));
+
+                                            $response = curl_exec($curl);
+
+                                            curl_close($curl);
+                                            echo $response;') ?>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + +
+
+
+
\ No newline at end of file diff --git a/the23/pages/bio.php b/the23/pages/bio.php new file mode 100644 index 0000000..68c4649 --- /dev/null +++ b/the23/pages/bio.php @@ -0,0 +1,200 @@ +
+ +
+
+
+

+ +

+

+ +

+
+
+ + + +
+
+
+

+ + +

+
+
+
+
+ +
+
+ +

Madison

+
+ + +
+
+ + +
+
+
+
+
+
+
+
+
+
+
+
.
+

+ +

+
    +
  • +
    +
    + + + +
    +
    + count($widgets)]) ?> +

    +
    +
    +
  • +
  • +
    +
    + + + +
    +
    + +

    +
    +
    +
  • +
  • +
    +
    + + + +
    +
    + +

    +
    +
    +
  • +
+ +
+
+
+
+ +

Laura

+
+ + +
+
+
+ +
+
+
+
+ +

Sam

+
+ + +
+
+
+ +
+
+
+
+ +

Steve

+
+ + +
+
+
+ +
+
+ +
+
+ +
+
+
+
+
+
+
+
+
.
+

+ +

+ +
+
+ <?php ee('Trackable to the dot') ?> +
+
+
+
+
+
+
+
+

audience") ?>

+

+ +
+
+ + +
+ + +
+ +
+
+
+
+
+
+
+
+
+

+

+
+
+ +
+
+
+
+
\ No newline at end of file diff --git a/the23/pages/consent.php b/the23/pages/consent.php new file mode 100644 index 0000000..d26f78f --- /dev/null +++ b/the23/pages/consent.php @@ -0,0 +1,21 @@ +
+
+
+

+ +

+

+ message) ? e(config('cookieconsent')->message) : e("This website uses cookies to ensure you get the best experience on our website. You can learn more by visiting our cookie policy. Meanwhile if you agree, please click the button below to proceed to your destination.") ?> +

+
+
+
+ +
+
+ +
+
+
+
+
\ No newline at end of file diff --git a/the23/pages/contact.php b/the23/pages/contact.php new file mode 100644 index 0000000..0c2a4f2 --- /dev/null +++ b/the23/pages/contact.php @@ -0,0 +1,73 @@ +
+
+
+
+

+

+ +
+
+
+
+
+
+
+
+ + " id="contact-name" name="name" value="username : '' ?>" min="2" data-error="" required> +
+
+
+
+ + " name="email" id="contact-email" value="email : '' ?>" data-error="" required> +
+
+
+
+ + +
+ +
+ +
+ +
+
+
+
+
+
+
+
+
\ No newline at end of file diff --git a/the23/pages/index.php b/the23/pages/index.php new file mode 100644 index 0000000..28186bb --- /dev/null +++ b/the23/pages/index.php @@ -0,0 +1,14 @@ +
+
+
+
+
+

name ?>

+
+ content ?> +
+
+
+
+
+
\ No newline at end of file diff --git a/the23/pages/link.php b/the23/pages/link.php new file mode 100644 index 0000000..06eeb78 --- /dev/null +++ b/the23/pages/link.php @@ -0,0 +1,548 @@ +
+
+
+
+

+ +

+

+ +

+
+ +
+ " name="url" id="url"> +
+ + + + + +
+
+ + +
+
+
+ + " autocomplete="off"> +
+
+
+
+ + " autocomplete="off"> +
+
+
+ + +
+
+
+
+
+

+ +
+
+
+

+ + +

+
+
+
+ hero) && !empty($themeconfig->hero)): ?> + <?php echo config(" class="img-fluid mw-lg-120 rounded-top zindex-100"> + + +
+
+
+
+
+
+ +
+
+ +
+
+ M +
+
+
+
+
+
+

+ +% +

+ M +
+ K +
+
+
+
+
+
+ +
+
+
+
+
+
+
+ + + +
+
+
+
+
+
+ + + +
+
+
+
+
+ +
+
+
+
+
+
+
+
+
+
.
+

+ +

+
    +
  • +
    +
    + + + +
    +
    + +

    +
    +
    +
  • +
  • +
    +
    + + + +
    +
    + +

    +
    +
    +
  • +
  • +
    +
    + + + +
    +
    + +

    +
    +
    +
  • +
+ +
+
+
+
+
+
+
+ +
+
+
short
+ +
+
+
+ +
+
+
+
+ + K +
+
+
+
+
+ +% + +
+
+
+
+
+
+
+ +
+
+
+ +
+
+
+ +
+
+
+
+
+
+ + +
+ % +
+
+
+
+
+
+
+
+ + +
+ % +
+
+
+
+
+
+
+ + +
+
+
+
+
+
+
+
+ +
+
+
+ +
+
+
+ +
+
+
+
+
+
+
+

K

+ + +% +
+
+
+
+
+
+

K

+ + +% +
+
+
+
+
+ + + +
+
+
+ + +
+ % +
+
+
+
+
+
+ x + h +
+
+
+
+
+
+
+
+
+
.
+

+ +

+ +
+
+
+
+
+
+ +
+
+
+ +
+
+
+ +
+
+
+ 'us.svg', 'name' => e('United States of America'), 'percent' => rand(50, 70)], + ['flag' => 'gb.svg', 'name' => e('United Kingdom'), 'percent' => rand(15, 25)], + ['flag' => 'ca.svg', 'name' => e('Canada'), 'percent' => rand(8, 15)], + ['flag' => 'jp.svg', 'name' => e('Japan'), 'percent' => rand(3, 8)] + ]; + foreach($countries as $index => $country): + ?> +
+
+ + + + +
+
+
+ +
+ % + + + % + + +
+
+
+
+
+ +
+ + + + + + +
+ +
+
+ +
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+
+

supercharge your links") ?>

+

+ +
+
+
+
+
+ +

+

+ +

+
+
+
+
+
+
+ +

+

+ +

+
+
+
+
+
+
+ +

+

+ +

+
+
+
+
+
+
+ +

+

+ +

+
+
+
+
+
+
+ +

+

+ +

+
+
+
+
+
+
+ +

+

+ +

+
+
+
+
+
+
+ +

+

+ +

+
+
+
+
+
+
+ +

+

+ +

+
+
+
+
+
+
+
+
+
+
+
+
+

+

+
+
+ +
+
+
+
+
+ + + diff --git a/the23/pages/main.php b/the23/pages/main.php new file mode 100644 index 0000000..3f9cf9b --- /dev/null +++ b/the23/pages/main.php @@ -0,0 +1,14 @@ +
+
+

+ name ?> +

+
+
+
+
+
+ content ?> +
+
+
diff --git a/the23/pages/qr.php b/the23/pages/qr.php new file mode 100644 index 0000000..a4242e2 --- /dev/null +++ b/the23/pages/qr.php @@ -0,0 +1,487 @@ +
+ +
+ +
+
+

+ for {t}', null, ['t' => ''.e('Free').'']) ?> +

+
+
+
+ +
+
+
+ + + + + - + +
+
+ + + + + + + + +
+
+
+
+
+ + +
+
+
+ +
+
+
+ + +
+
+ + +
+
+ + +
+
+
+
+
+
+ + +
+
+
+
+
+
+ + +
+
+ + +
+
+
+
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+
+
+
+
+ + +
+
+ + +
+
+ + +
+
+
+
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+
+
+ + +
+
+
+
+ + +
+
+
+
+
+
+ +
+
+
+
+ + + + +
+
+
+
+
+
+ +
+
+
+
+
+ +
+
+
+
+
+
+ + + + + +
+
+
+ + +
+
+
+ + +
+
+
+
+
+ +
+
+ + + +
+

+ +
+
+
+
+ +
+
+

+ +

+

+ +

+

+ + +

+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
.
+

+ +

+
    +
  • +
    +
    + + + +
    +
    + +

    +
    +
    +
  • +
  • +
    +
    + + + +
    +
    + +

    +
    +
    +
  • +
  • +
    +
    + + + +
    +
    + +

    +
    +
    +
  • +
  • +
    +
    + + + +
    +
    + +

    +
    +
    +
  • +
+ +
+
+
+
+ + + + + + +
+
+
+
+
+
+
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+ +
+
+
+
+
+
+
+
+
.
+

+ +

+ +
+
+ <?php ee('Trackable to the dot') ?> +
+
+
+
+
+

+

+
+
+ +
+
+
+
+
\ No newline at end of file diff --git a/the23/pages/report.php b/the23/pages/report.php new file mode 100644 index 0000000..17900c5 --- /dev/null +++ b/the23/pages/report.php @@ -0,0 +1,42 @@ +
+
+
+
+

+

+
+
+
+
+
+
+ + " name="email" id="contact-email" value="email : '' ?>" data-error="" required> +
+
+ + " id="contact-link" name="link" value="" data-error="" min="10" required> +
+
+ + +
+ +
+ +
+ +
+
+
+
+
+
+
+
+
\ No newline at end of file diff --git a/the23/partials/footer.php b/the23/partials/footer.php new file mode 100644 index 0000000..7d8cc36 --- /dev/null +++ b/the23/partials/footer.php @@ -0,0 +1,127 @@ + diff --git a/the23/partials/languagejs.php b/the23/partials/languagejs.php new file mode 100644 index 0000000..510a09b --- /dev/null +++ b/the23/partials/languagejs.php @@ -0,0 +1,44 @@ + \ No newline at end of file diff --git a/the23/partials/main_menu.php b/the23/partials/main_menu.php new file mode 100644 index 0000000..48b5aa3 --- /dev/null +++ b/the23/partials/main_menu.php @@ -0,0 +1,239 @@ +
+
+ +
+
\ No newline at end of file diff --git a/the23/partials/stats_nav.php b/the23/partials/stats_nav.php new file mode 100644 index 0000000..2d084d4 --- /dev/null +++ b/the23/partials/stats_nav.php @@ -0,0 +1,25 @@ + \ No newline at end of file diff --git a/the23/pricing/categorized.php b/the23/pricing/categorized.php new file mode 100644 index 0000000..042fd61 --- /dev/null +++ b/the23/pricing/categorized.php @@ -0,0 +1,186 @@ +
+
+
+
+
+
+
+
+
+ +
+
+ +
+ + + + " data-pricing-yearly="" data-pricing-lifetime="">'.$term.'' ?> + +
+
+ + + + + +
+ +
+
+
+
+
+ $title): ?> +
+
+
+
+
+
+
+
+
+ +
+
+
+
+ +
+
+
+
+ +
+ ' : number_format($plan["urls"]).($plan['ismonthly'] ? '/'.e('mo') : '') ?> +
+ +
+
+
+
+
+
+
+
+ +
+
+
+
+ +
+ ' : number_format($plan["clicks"]).'/'.e('mo') ?> +
+ +
+
+
+
+ + $feature): ?> + + +
+
+
+
+ +
+
+
+
+ +
+ {$slug}) && $plan["permission"]->{$slug}->enabled): ?> + + + + apirate->count == '0' ? '' : ee('{x}/min', null, ['x' => $plan["permission"]->apirate->count]) ?> + + + + qr->count == '0' ? '' : $plan["permission"]->qr->count.($plan['isqrmonthly'] ? '/'.e('mo') : '') ?> + + + + {$slug}->count == '0' ? '' : $plan["permission"]->{$slug}->count ?> + + + + + bioblocks->custom) ? count(explode(',', $plan["permission"]->bioblocks->custom)).' '.e('Widgets') : count(\Helpers\BioWidgets::widgets()).' '. e('Widgets') ?> + + + + + + + +
+ +
+
+
+
+ + +
+
+ \ No newline at end of file diff --git a/the23/pricing/checkout.php b/the23/pricing/checkout.php new file mode 100644 index 0000000..62cee02 --- /dev/null +++ b/the23/pricing/checkout.php @@ -0,0 +1,231 @@ +
+
+

+ +
+ +
+
+
+
+
+
+ $processor): ?> + enabled) continue ?> + + +
+ $processor): ?> + enabled) continue ?> + +
+ + +
+
+
+
+
+ +
+ + +
+
+
+
+
+ + "> +
+
+
+
+ + "> +
+
+
+
+
+ + +
+
+ + "> +
+
+
+
+ + "> +
+
+
+
+ + "> +
+
+
+
+
+
+ + +
+
+
+
+ + "> +
+
+
+
+
+
+
+
+
+
+ price_lifetime && $plan->price_lifetime != "0.00"): ?> + + + + + price_monthly && $plan->price_monthly != "0.00"): ?> + + + + + price_yearly && $plan->price_yearly != "0.00"): ?> + + + + +
+
+
+ icon): ?> + + + + + name ?> +
+
+ price) ?> +
+
+
+
+
+ +
+
+ price) ?> +
+
+
+ +
+ + + + +
+ +
+ +
+
+
+ +
+
+
+
+
+ +
+
+
+ name} ({$tax->rate}%)" ?> +
+
+ price); $plan->price = $plan->price + $tax->price;?> +
+
+
+ +
+
+
+
+ +
+
+ price) ?> +

+
+
+
+ +
+
+
+ +
+ +
+ +
+ config('currency')]) ?> +
+
+
+
+
+
+ + + \ No newline at end of file diff --git a/the23/pricing/index.php b/the23/pricing/index.php new file mode 100644 index 0000000..3236b8c --- /dev/null +++ b/the23/pricing/index.php @@ -0,0 +1,83 @@ +
+
+
+
+

+ +

+

that works for you') ?>

+

+ +

+
+
+
+ +
+
+
+ + + + + + + + + +
+
+ + + + + + + +
+ +
+
+
+

+

+
+
+ +
+
+
+ +
+
+
+
+

+

+ +
+
+ $faq): ?> +
+
+ +
+
+ answer) ?> +
+
+
+
+ +
+
+
+
+
\ No newline at end of file diff --git a/the23/pricing/list.php b/the23/pricing/list.php new file mode 100644 index 0000000..aa15dad --- /dev/null +++ b/the23/pricing/list.php @@ -0,0 +1,70 @@ +
+ $plan): ?> +
+
+
+ + + + + + + + $plan['discount'] ]) ?> + + +
+
+ + + + +
" data-pricing-yearly="" data-pricing-lifetime="">'.$term.'' ?>
+ '.e($plan['description']).'': '' ?> + + + + + +
+
+
    +
  • ' : number_format($plan["urls"]).($plan['ismonthly'] ? '/'.e('mo') : '') ?>
  • +
  • ' : number_format($plan["clicks"]).'/'.e('mo') ?>
  • +
  • ' : $plan["retention"].' '.e('days') ?>
  • + + $feature): ?> + {$slug}) && $plan["permission"]->{$slug}->enabled): ?> + +
  • + + + apirate->count == '0'): ?> + + + $plan["permission"]->apirate->count]) ?> + + + {$slug}->count == '0' ? e('Unlimited') : $plan["permission"]->{$slug}->count ?> + +
  • + +
  • + bioblocks->custom) ? count(explode(',', $plan["permission"]->bioblocks->custom)).' '.e('Widgets') : count(\Helpers\BioWidgets::widgets()).' '. e('Widgets') ?> +
  • + +
  • + + +
  • + + + +
  • ">' : '' ?>
  • + custom ? '
  • '.$plan["permission"]->custom.'
  • ' : '' ?> +
+
+
+
+ +
\ No newline at end of file diff --git a/the23/pricing/table.php b/the23/pricing/table.php new file mode 100644 index 0000000..d5c56f9 --- /dev/null +++ b/the23/pricing/table.php @@ -0,0 +1,143 @@ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $feature): ?> + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  + + + + + + + + $plan['discount'] ]) ?> + + + + + + +
" data-pricing-yearly="" data-pricing-lifetime="">'.$term.'' ?>
+ '.e($plan['description']).'': '' ?> + + + + + +
+ ' : number_format($plan['urls']).($plan['ismonthly'] ? ' / '.e('month') : '') ?> +
+ ' : number_format($plan['clicks']).' / '.e('month') ?> +
+ +
+ + + + {$slug}) && $plan["permission"]->{$slug}->enabled; + if(!$featureEnabled): ?> + + {$slug}->count; + if($slug === 'apirate'): ?> + + ' : ee('{x}/min', null, ['x' => $count]); ?> + + + + + + + + / + + + + + + bioblocks->custom) + ? count(explode(',', $plan["permission"]->bioblocks->custom)) + : count(\Helpers\BioWidgets::widgets()); + echo $blockCount . ' ' . e('Widgets'); + ?> + + + + + +
+ ' : '' ?> +
  + custom)): ?> + custom ?> + +
  + + + + + +
+
\ No newline at end of file diff --git a/the23/private.php b/the23/private.php new file mode 100644 index 0000000..87a7377 --- /dev/null +++ b/the23/private.php @@ -0,0 +1,18 @@ +
+
+
+ + + + +

+ +
+ +
+

+ +

+
+
+
\ No newline at end of file diff --git a/the23/screenshot.png b/the23/screenshot.png new file mode 100644 index 0000000..077173d Binary files /dev/null and b/the23/screenshot.png differ
+ $plan): ?> +
+ + + + + +
+
+ + + +

+

'.e($plan['description']).'': '' ?>

+
+ +
" data-pricing-yearly="" data-pricing-lifetime="">'.$term.'' ?>
+
+
+ + $plan['discount'] ]) ?> + +
    +
  • + + ' : number_format($plan["urls"]).($plan['ismonthly'] ? '/'.e('mo') : '') ?> +
  • +
  • + + ' : number_format($plan["clicks"]).'/'.e('mo') ?> +
  • +
  • + + qr) && $plan["permission"]->qr->enabled) ? ($plan["permission"]->qr->count == '0' ? '' : $plan["permission"]->qr->count).($plan['isqrmonthly'] ? '/'.e('mo') : '') : '' ?> +
  • +
  • + + bio) && $plan["permission"]->bio->enabled) ? ($plan["permission"]->bio->count == '0' ? '' : $plan["permission"]->bio->count) : '' ?> +
  • +
  • + + ' : $plan["retention"].' '.e('days') ?> +
  • + custom ? '
  • '.$plan["permission"]->custom.'
  • ' : '' ?> +
+ + + + + +
+
+
+ +