In order for a addon to act as a module it needs to declare an empty function `<addon>_module()`.
If this function exists, you will now receive all page requests for `https://my.web.site/<addon>` - with any number of URL components as additional arguments.
-These are parsed into an array $a->argv, with a corresponding $a->argc indicating the number of URL components.
-So `https://my.web.site/addon/arg1/arg2` would look for a module named "addon" and pass its module functions the $a App structure (which is available to many components).
-This will include:
-
+These are parsed into the `App\Arguments` object.
+So `https://my.web.site/addon/arg1/arg2` would give this:
```php
-$a->argc = 3
-$a->argv = array(0 => 'addon', 1 => 'arg1', 2 => 'arg2');
+DI::args()->getArgc(); // = 3
+DI::args()->get(0); // = 'addon'
+DI::args()->get(1); // = 'arg1'
+DI::args()->get(2); // = 'arg2'
```
To display a module page, you need to declare the function `<addon>_content(App $a)`, which defines and returns the page body content.
Um ein Addon als Modul zu nutzen, ist es nötig, die Funktion "addon_name_module()" zu definieren, die keine Argumente benötigt und nichts weiter machen muss.
Wenn diese Funktion existiert, wirst du nun alle Seitenanfragen für "http://example.com/addon_name" erhalten - mit allen URL-Komponenten als zusätzliche Argumente.
-Diese werden in ein Array $a->argv geparst und stimmen mit $a->argc überein, wobei sie die Anzahl der URL-Komponenten abbilden.
-So würde http://example.com/addon/arg1/arg2 nach einem Modul "addon" suchen und seiner Modulfunktion die $a-App-Strukur übergeben (dies ist für viele Komponenten verfügbar). Das umfasst:
-
- $a->argc = 3
- $a->argv = array(0 => 'addon', 1 => 'arg1', 2 => 'arg2');
+Diese werden in das App\Arguments Objekt geparst.
+So würde `http://example.com/addon/arg1/arg2` dies ergeben:
+```php
+DI::args()->getArgc(); // = 3
+DI::args()->get(0); // = 'addon'
+DI::args()->get(1); // = 'arg1'
+DI::args()->get(2); // = 'arg2'
+```
Deine Modulfunktionen umfassen oft die Funktion addon_name_content(App $a), welche den Seiteninhalt definiert und zurückgibt.
Sie können auch addon_name_post(App $a) umfassen, welches vor der content-Funktion aufgerufen wird und normalerweise die Resultate der POST-Formulare handhabt.
use Friendica\DI;
+$frio = 'view/theme/frio';
+
?>
<!DOCTYPE html >
<html>
<meta name="viewport" content="initial-scale=1.0">
<meta request="<?php echo htmlspecialchars($_REQUEST['pagename']) ?>">
<script type="text/javascript">var baseurl="<?php echo DI::baseUrl() ?>";</script>
- <script type="text/javascript">var frio="<?php echo "view/theme/frio"; ?>";</script>
- <?php $baseurl = DI::baseUrl(); ?>
- <?php $frio = "view/theme/frio"; ?>
+ <script type="text/javascript">var frio="<?php echo $frio; ?>";</script>
<?php if(!empty($page['htmlhead'])) echo $page['htmlhead']; ?>
</head>
<body id="top">
-<?php if($_SERVER['REQUEST_URI'] == "/"){header('Location: /login');} ?>
+<?php if($_SERVER['REQUEST_URI'] == '/'){header('Location: /login');} ?>
<a href="#content" class="sr-only sr-only-focusable"><?php echo DI::l10n()->t('Skip to main content'); ?></a>
<?php
if(!empty($page['nav'])) {
- echo str_replace("~config.sitename~", DI::config()->get('config','sitename'),
- str_replace("~system.banner~", DI::config()->get('system','banner'),
+ echo str_replace('~config.sitename~', DI::config()->get('config','sitename'),
+ str_replace('~system.banner~', DI::config()->get('system','banner'),
$page['nav']
));};
?>
<div class="container">
<div class="row">
<?php
- echo"
- <aside class=\"col-lg-3 col-md-3 hidden-sm hidden-xs\">
- "; if(!empty($page['aside'])) echo $page['aside']; echo"
- "; if(!empty($page['right_aside'])) echo $page['right_aside']; echo"
- "; include('includes/photo_side.php'); echo"
+ echo '
+ <aside class="col-lg-3 col-md-3 hidden-sm hidden-xs">
+ '; if(!empty($page['aside'])) echo $page['aside']; echo'
+ '; if(!empty($page['right_aside'])) echo $page['right_aside']; echo'
+ '; include('includes/photo_side.php'); echo'
</aside>
- <div class=\"col-lg-8 col-md-8 col-sm-12 col-xs-12\" id=\"content\">
- <section class=\"sectiontop\">
- <div class=\"panel "; echo $a->argv[0]; echo "-content-wrapper\">
- <div class=\"panel-body\">";
- if(!empty($page['content'])) echo $page['content']; echo"
- <div id=\"pause\"></div> <!-- The pause/resume Ajax indicator -->
+ <div class="col-lg-8 col-md-8 col-sm-12 col-xs-12" id="content">
+ <section class="sectiontop">
+ <div class="panel ' . DI::args()->get(0, 'generic') . '-content-wrapper">
+ <div class="panel-body">';
+ if(!empty($page['content'])) echo $page['content']; echo'
+ <div id="pause"></div> <!-- The pause/resume Ajax indicator -->
</div>
</div>
</section>
</div>
- ";
+ ';
?>
</div><!--row-->
</div><!-- container -->
</main>
<footer>
-<span id="notifsound"></span>
<script>
- $("#menu-toggle").click(function(e) {
+ $('#menu-toggle').click(function(e) {
e.preventDefault();
- $("#wrapper").toggleClass("toggled");
+ $('#wrapper').toggleClass('toggled');
});
</script>
<script type="text/javascript">
<script>
var pagetitle = null;
-$("nav").bind('nav-update', function(e,data)
+$('nav').bind('nav-update', function(e,data)
{
if (pagetitle==null) pagetitle = document.title;
var count = $(data).find('notif').attr('count');
if (count>0)
{
- document.title = "("+count+") "+pagetitle;
- /* document.getElementById('notifsound').innerHTML='<object type="audio/mpeg" width="0" height="0" data="<?=$frio?>/audios/901.mp3"><param name="notif" value="<?=$frio?>/audios/901.mp3" /><param name="autostart" value="true" /><param name="loop" value="false" /></object>'; */
+ document.title = '('+count+') '+pagetitle;
}
else
{