# `MishkaCmsCore.Runtime.AdminSiteIcons`
[🔗](https://github.com/mishka-group/mishka_cms_core/blob/v0.0.5-alpha.5/lib/mishka_cms_core/runtime/admin_site_icons.ex#L5)

A plain mishka_installer plugin: the admin's pages name the icons of the site they are served on,
as the site's public pages do. The root layout fires `RootHtml.MetaTags` inside `<head>` with
`%{html: html, assigns: assigns}`, and this plugin appends the site's icon links
(`MishkaCmsCore.Runtime.Seo.icon_links/1`: its `site.favicon` and its home-screen icon) to `html`.
Registered in MishkaCmsCore.Application.

## Which pages

The ones the admin serves: `admin_css` is set on every admin page, and `current_site` is the site
the request's host resolved to, so a master in master mode sees the icons of the host they are on.
A public page is left alone, because its head already names the icons
(`MishkaCmsCore.Runtime.Seo`), and so is a page with no site, such as the installer. A site with
no favicon and no home-screen icon adds nothing.

Each link's address is the one the public head names, which `Seo.favicon/1` has checked to be a
path on the site or an `http(s)` address, and every attribute is escaped.

# `error_return`

```elixir
@type error_return() ::
  {:error, [%{action: atom(), field: atom(), message: String.t()}]}
```

# `okey_return`

```elixir
@type okey_return() :: {:ok, struct() | map() | module() | [any()]}
```

# `child_spec`

Returns a specification to start this module under a supervisor.

See `Supervisor`.

# `config`

```elixir
@spec config() :: keyword()
```

# `config`

```elixir
@spec config(atom()) :: any()
```

# `enable`

```elixir
@spec enable() :: okey_return() | error_return()
```

# `get`

```elixir
@spec get() :: keyword()
```

# `health_check`

```elixir
@spec health_check() :: :ok | {:degraded, term()} | {:error, term()}
```

Optional. See `c:MishkaInstaller.Event.Hook.health_check/0`. Override to report health.

# `on_dependency_error`

```elixir
@spec on_dependency_error(term()) :: term()
```

Optional. See `c:MishkaInstaller.Event.Hook.on_dependency_error/1`. Override to react.

# `register`

```elixir
@spec register() :: okey_return() | error_return()
```

# `restart`

```elixir
@spec restart() :: okey_return() | error_return()
```

# `start`

```elixir
@spec start() :: okey_return() | error_return()
```

# `start_link`

# `stop`

```elixir
@spec stop() :: okey_return() | error_return()
```

# `unregister`

```elixir
@spec unregister() :: okey_return() | error_return()
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
