share modal implementation

This commit is contained in:
HB9HIL
2024-12-26 14:01:00 +01:00
parent ac22ce234a
commit e5d062e408
6 changed files with 67 additions and 11 deletions

View File

@@ -675,4 +675,20 @@ class QSO extends CI_Controller {
redirect('dashboard');
}
}
/**
* Easy modal Loader
* Used for Share Modal in QSO Details view
*/
function getShareModal() {
$data['qso'] = $this->input->post('qso_data', TRUE);
if (empty($data['qso'])) {
echo "No QSO data provided.";
return;
}
$this->load->view('qso/components/share_modal', $data, false);
}
}

View File

@@ -30,6 +30,7 @@
*/
var lang_general_word_qso_data = "<?= __("QSO Data"); ?>";
var lang_general_edit_qso = "<?= __("Edit QSO"); ?>";
var lang_general_share_qso = "<?= __("Share QSO"); ?>";
var lang_general_word_danger = "<?= __("DANGER"); ?>";
var lang_general_word_error = "<?= __("ERROR"); ?>";
var lang_general_word_attention = "<?= __("Attention"); ?>";

View File

@@ -0,0 +1,13 @@
<div class="container" id="share_modal">
<a class="btn btn-primary mb-3" target="_blank" href="https://twitter.com/intent/tweet?text=<?php echo urlencode($qso['twitter_string']); ?>">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 512 512"><!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path fill="white" d="M389.2 48h70.6L305.6 224.2 487 464H345L233.7 318.6 106.5 464H35.8L200.7 275.5 26.8 48H172.4L272.9 180.9 389.2 48zM364.4 421.8h39.1L151.1 88h-42L364.4 421.8z"/></svg> <?= __("Post on X"); ?>
</a>
<a class="btn btn-primary mb-3" target="_blank" href="https://bsky.app/intent/compose?text=<?php echo urlencode($qso['twitter_string']); ?>">
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 512 512"><!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path fill="white" d="M111.8 62.2C170.2 105.9 233 194.7 256 242.4c23-47.6 85.8-136.4 144.2-180.2c42.1-31.6 110.3-56 110.3 21.8c0 15.5-8.9 130.5-14.1 149.2C478.2 298 412 314.6 353.1 304.5c102.9 17.5 129.1 75.5 72.5 133.5c-107.4 110.2-154.3-27.6-166.3-62.9l0 0c-1.7-4.9-2.6-7.8-3.3-7.8s-1.6 3-3.3 7.8l0 0c-12 35.3-59 173.1-166.3 62.9c-56.5-58-30.4-116 72.5-133.5C100 314.6 33.8 298 15.7 233.1C10.4 214.4 1.5 99.4 1.5 83.9c0-77.8 68.2-53.4 110.3-21.8z"/></svg> <?= __("Post on Bluesky"); ?>
</a>
<?php if ($this->session->userdata('user_mastodon_url') != null) { ?>
<a class="btn btn-primary mb-3" target="_blank" href="<?php echo $this->session->userdata('user_mastodon_url') . '/share?text=' . urlencode($qso['twitter_string']); ?>">
<i class="fab fa-mastodon"></i> <?= __("Toot on Mastodon"); ?>
</a>
<?php } ?>
</div>

View File

@@ -585,15 +585,15 @@
$hashtags .= " #".$row->COL_SIG." ".$row->COL_SIG_INFO;
}
if (!isset($distance)) {
$twitter_string = urlencode("Just worked ".$row->COL_CALL." ");
$twitter_string = "Just worked ".$row->COL_CALL." ";
if ($row->COL_DXCC != 0) {
$twitter_string .= urlencode("in ".ucwords(strtolower(($row->COL_COUNTRY)))." ");
$twitter_string .= "in ".ucwords(strtolower(($row->COL_COUNTRY)))." ";
}
$twitter_string .= urlencode("on ".$twitter_band_sat." using ".($row->COL_SUBMODE==null?$row->COL_MODE:$row->COL_SUBMODE)." ".$hashtags);
$twitter_string .= "on ".$twitter_band_sat." using ".($row->COL_SUBMODE==null?$row->COL_MODE:$row->COL_SUBMODE)." ".$hashtags;
} else {
$twitter_string = urlencode("Just worked ".$row->COL_CALL." ");
$twitter_string = "Just worked ".$row->COL_CALL." ";
if ($row->COL_DXCC != 0) {
$twitter_string .= urlencode("in ".ucwords(strtolower(($row->COL_COUNTRY)))." ");
$twitter_string .= "in ".ucwords(strtolower(($row->COL_COUNTRY)))." ";
if ($dxccFlag != null) {
$twitter_string .= $dxccFlag." ";
}
@@ -610,14 +610,10 @@
$distancestring = "(Grids: ".$row->COL_VUCC_GRIDS.")";
}
}
$twitter_string .= urlencode($distancestring." on ".$twitter_band_sat." using ".($row->COL_SUBMODE==null?$row->COL_MODE:$row->COL_SUBMODE)." ".$hashtags);
$twitter_string .= $distancestring." on ".$twitter_band_sat." using ".($row->COL_SUBMODE==null?$row->COL_MODE:$row->COL_SUBMODE)." ".$hashtags;
}
?>
<div style="display: inline-block;"><a class="btn btn-primary twitter-share-button" target="_blank" href="https://twitter.com/intent/tweet?text=<?php echo $twitter_string; ?>"><i class="fab fa-twitter"></i> Tweet</a></div>
<div style="display: inline-block;"><a class="btn btn-primary twitter-share-button" target="_blank" href="https://bsky.app/intent/compose?text=<?php echo $twitter_string; ?>"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 512 512"><!--!Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2024 Fonticons, Inc.--><path fill="white" d="M111.8 62.2C170.2 105.9 233 194.7 256 242.4c23-47.6 85.8-136.4 144.2-180.2c42.1-31.6 110.3-56 110.3 21.8c0 15.5-8.9 130.5-14.1 149.2C478.2 298 412 314.6 353.1 304.5c102.9 17.5 129.1 75.5 72.5 133.5c-107.4 110.2-154.3-27.6-166.3-62.9l0 0c-1.7-4.9-2.6-7.8-3.3-7.8s-1.6 3-3.3 7.8l0 0c-12 35.3-59 173.1-166.3 62.9c-56.5-58-30.4-116 72.5-133.5C100 314.6 33.8 298 15.7 233.1C10.4 214.4 1.5 99.4 1.5 83.9c0-77.8 68.2-53.4 110.3-21.8z"/></svg> Post</a></div>
<?php if($this->session->userdata('user_mastodon_url') != null) { echo '<div style="display: inline-block;"><a class="btn btn-primary twitter-share-button" target="_blank" href="'.$this->session->userdata('user_mastodon_url').'/share?text='.$twitter_string.'"><i class="fab fa-mastodon"></i> Toot</a></div>'; } ?>
<button class="btn btn-primary" onClick='shareModal(<?php echo json_encode(['qso' => $row, 'twitter_string' => $twitter_string]); ?>);'><i class="fas fa-share-square"></i> <?= __("Share"); ?></button>
</div>
</div>
</div>

View File

@@ -266,6 +266,11 @@ thead > tr > td {
text-transform: uppercase;
}
#share_modal {
display: grid;
grid-template-columns: auto;
}
#oqrssearch:valid {
text-transform: uppercase;
}

View File

@@ -1159,6 +1159,31 @@ function enableMap() {
map.keyboard.enable();
}
function shareModal(qso_data) {
console.log(qso_data);
$.ajax({
url: base_url + 'index.php/qso/getShareModal',
type: 'post',
data: {
qso_data: qso_data
},
success: function (html) {
BootstrapDialog.show({
title: lang_general_share_qso,
cssClass: 'bg-black bg-opacity-50',
nl2br: false,
message: html,
buttons: [{
label: lang_admin_close,
action: function (dialogItself) {
dialogItself.close();
}
}]
});
}
});
}
console.log("Ready to unleash your coding prowess and join the fun?\n\n" +
"Check out our GitHub Repository and dive into the coding adventure:\n\n" +
"🚀 https://www.github.com/wavelog/wavelog");