Skip to content
Snippets Groups Projects
Verified Commit e02128a0 authored by Andrej Ramašeuski's avatar Andrej Ramašeuski
Browse files

Podpora custom url

parent edef0907
No related branches found
No related tags found
No related merge requests found
Pipeline #8605 passed
- custom url
- 302 nebo informacni stranka
- statistika - statistika
- smazani - editace/smazani
- loop detect
- 302 nebo informacni stranka
0.1.2 0.2.0
...@@ -8,11 +8,31 @@ use Image::PNG::QRCode 'qrpng'; ...@@ -8,11 +8,31 @@ use Image::PNG::QRCode 'qrpng';
sub create ($c) { sub create ($c) {
my $url = $c->param('url'); my $url = $c->param('url');
if( ! is_uri($url) ){ if( ! is_uri($url) ) {
$c->render('shortcut/invalid'); $c->render('shortcut/invalid', error => 'Chybná URL adresa!');
return; return;
} }
my $custom = lc($c->param('shortcut'));
if ( ! $custom =~ /^[a..z0..9]{1,8}$/i ) {
$c->render('shortcut/invalid', error => 'Neplatná zkratka');
return;
}
if ( $custom ) {
my $exists = $c->schema->resultset('Shortcut')->search({
is_active => 1,
deleted => undef,
shortcut => $custom,
})->count;
if( $exists ) {
$c->render('shortcut/invalid', error => "Zkratka $custom už je použitá");
return;
}
}
my %data = ( my %data = (
user_id => $c->current_user->{id}, user_id => $c->current_user->{id},
deleted => undef, deleted => undef,
...@@ -23,7 +43,7 @@ sub create ($c) { ...@@ -23,7 +43,7 @@ sub create ($c) {
$shortcut ||= $c->schema->resultset('Shortcut')->create({ $shortcut ||= $c->schema->resultset('Shortcut')->create({
%data, %data,
shortcut => $c->schema->resultset('Shortcut')->generate(), shortcut => $custom // $c->schema->resultset('Shortcut')->generate(),
}); });
$url = 'https://' . $c->config->{domain} . '/' . $shortcut->shortcut; $url = 'https://' . $c->config->{domain} . '/' . $shortcut->shortcut;
......
<p>
<div class="card elevation-4">
<div class="card__body">
<form hx-post="/" hx-target="#response" hx-params="*"> <form hx-post="/" hx-target="#response" hx-params="*">
<div class="form-field"> <div class="card elevation-4 space-y-4">
<label class="form-field__label" for="field">URL</label> <div class="card__body">
<div class="grid grid-cols-12 gap-4 row-gap-6">
<div class="form-field col-span-9">
<label class="form-field__label" for="url">URL</label>
<div class="form-field__wrapper form-field__wrapper--shadowed"> <div class="form-field__wrapper form-field__wrapper--shadowed">
<input type="text" name="url" class="text-input form-field__control" value="" placeholder="https://www.pirati.cz/program/dlouhodoby/psychotropni-latky/" required="required" /> <input type="text" name="url" class="text-input form-field__control" value="" placeholder="https://www.pirati.cz/program/dlouhodoby/psychotropni-latky/" required="required" />
<button class="btn btn--grey-125 btn--hoveractive"> </div>
</div>
<div class="form-field col-span-3">
<label class="form-field__label" for="shortcut">Zkratka</label>
<div class="form-field__wrapper form-field__wrapper--shadowed">
<input type="text" name="shortcut" class="text-input form-field__control w-40" size="8" maxlength="8" value="" placeholder="thc" />
<button class="btn btn--grey-125 btn--hoveractive ml-4">
<div class="btn__body">Zkrátit</div> <div class="btn__body">Zkrátit</div>
</button> </button>
</div> </div>
</div> </div>
</form>
</div>
</div> </div>
</p> </div>
</div>
</form>
<div id="response"></div> <div id="response"></div>
<span class="alert alert--red-600 alert--faded"> <span class="alert alert--red-600 alert--faded">
<span>Chybná URL adresa!</span> <span><%= $error %></span>
</span> </span>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment