nicolas conte
Here to stay
|
hallo, für ein projekt benutze ich civicrm, wobei ich ein paar änderungen vornehmen müsste. ich habe das ganze genauer in diesem thread http://forum.civicrm.org/index.php/...g78673.html#new im civicrm forum beschrieben; dort konnt mir lieder niemand helfen. ich hab nicht wirklich ahnung von php, muss ich gleich dazu sagen, und vielleicht ist auch mein ganzer ansatz lächerlich. wär trotzdem nett, wenn jemand sich das mal anschauen könnte. danke mfg conte
|
watchout
Legendundead
|
Es wär sinnvoll wenn du das Problem hier noch einmal zusammenfassend beschreibst, was du eigentlich willst, wie der code jetzt aussieht und was du verändert hast (diff)
|
nicolas conte
Here to stay
|
hi ok: also bei der open-source software civicrm gibt es das module civicontribute, das für die spendenverwaltung zuständig ist. In dem Modul gibt es ein dashboard mit einer tabelle in der das jährliche spendenvolumen, die spenden des aktuellen monats etc. angezeigt werden. Diese Tabelle möchte ich um ein paar punkte erweitern. Ich möchte die Summe der einzelnen Spendentypen (Privatspenden, Firmenspeden, etc.) des aktuellen Monats aufgelistet haben. die datei dashboard.tpl ist für die tabelle zuständig, da würde ich einfach folgendes hinzufügen, was auch funktioniert: <tr>
<td><strong>{ts}Private Donations{/ts}</strong></td>
<td class="label">{if NOT $monthToDate.Valid.amount}{ts}(n/a){/ts}{else}{$monthToDate.Valid.amount}{/if}</td>
<td class="label">{$monthToDate.Valid.count}</td>
<td><a href="{$monthToDate.Valid.url}">{ts}view details{/ts}...</a></td>
</tr>
in der datei dashboard.php werden meines wissen nach die einzelnen punkte berechnet: /**
* Heart of the viewing process. The runner gets all the meta data for
* the contact and calls the appropriate type of page to view.
*
* @return void
* @access public
*
*/
function preProcess( )
{
CRM_Utils_System::setTitle( ts('CiviContribute') );
$status = array( 'Valid', 'Cancelled' );
$prefixes = array( 'start', 'month', 'year' );
$startDate = null;
$startToDate = $monthToDate = $yearToDate = array( );
//get contribution dates.
require_once 'CRM/Contribute/BAO/Contribution.php';
$dates = CRM_Contribute_BAO_Contribution::getContributionDates( );
foreach ( array( 'now', 'yearDate', 'monthDate' ) as $date ) {
$$date = $dates[$date];
}
$yearNow = $yearDate + 10000;
foreach ( $prefixes as $prefix ) {
$aName = $prefix . 'ToDate';
$dName = $prefix . 'Date';
if ( $prefix == 'year') {
$now = $yearNow;
}
foreach ( $status as $s ) {
${$aName}[$s] = CRM_Contribute_BAO_Contribution::getTotalAmountAndCount( $s, $$dName, $now );
${$aName}[$s]['url'] = CRM_Utils_System::url( 'civicrm/contribute/search',
"reset=1&force=1&status=1&start={$$dName}&end=$now&test=0");
}
$this->assign( $aName, $$aName );
}
//for contribution tabular View
$buildTabularView = CRM_Utils_Array::value( 'showtable', $_GET, false );
$this->assign( 'buildTabularView', $buildTabularView );
if( $buildTabularView ) return;
ich müsste eben dashboard.php so modifizieren, dass es mir die Summe der einzelnen Spendentypen anzeigt. Ich hoffe, dass ich das halbwegs klar formuliert habe und mir jemand dabei helfen kann. Danke mfg conte
Bearbeitet von nicolas conte am 21.03.2011, 13:50
|
bensh
Addicted
|
Die Funktion ist nicht vollständig oder ? Egal.
Ich hab kurz bei dem anderen Thread reingeschaut und fand:
getTotalAmountAndCount( $s, $$dName, $now );
aus diesem Block:
foreach ( $status as $s ) { ${$aName}[$s] = CRM_Contribute_BAO_Contribution::getTotalAmountAndCount( $s, $$dName, $now ); ${$aName}[$s]['url'] = CRM_Utils_System::url( 'civicrm/contribute/search', "reset=1&force=1&status=1&start={$$dName}&end=$now&test=0");
Das was ich herausgezogen hab ist eine Funktion die wohl scheinbar genau das tut (könnte zmd sein, name passt ja so halbwegs) was du willst, nur das $now mit dem aktuellen Jahr funktioniert.
Du müsstest einfach eine Äquivalente Funktion in der Funktionsliste mit einer weiteren Variable einfügen, also nach $now noch , $nowmonth oder so, dann in der Funktion eben nach $month == thismonth und $year == thisyear überprüfen und dir das dann ausgeben.
Dazu musst du halt nen weiteren Block dort einfügen wo die Ausgaben definiert werden und dort die Funktion callen.
|
nicolas conte
Here to stay
|
hi ja dieser block berechnet das, aber wie kann ich den erweitern, damit er mir die jeweiligen Summen der einzelnen Spendentypen des aktuellen Monats sagt. ich hab das mal ohne php kenntnissen so geändert: $status = array( 'Valid', 'Cancelled' );
$prefixes = array( 'start', 'month', 'year' , 'private' );
$startDate = null;
$startToDate = $monthToDate = $yearToDate = $privateToDate = array( );
//get contribution dates.
require_once 'CRM/Contribute/BAO/Contribution.php';
$dates = CRM_Contribute_BAO_Contribution::getContributionDates( );
foreach ( array( 'now', 'yearDate', 'monthDate', 'privateDate' ) as $date ) {
$$date = $dates[$date];
}
$yearNow = $yearDate + 10000;
foreach ( $prefixes as $prefix ) {
$aName = $prefix . 'ToDate';
$dName = $prefix . 'Date';
$type = $contribution_type_id_value = 3;
if ( $prefix == 'year') {
$now = $yearNow;
}
foreach ( $status as $s ) {
${$aName}[$s] = CRM_Contribute_BAO_Contribution::getTotalAmountAndCount( $s, $$dName, $now, $type );
${$aName}[$s]['url'] = CRM_Utils_System::url( 'civicrm/contribute/search',
"reset=1&force=1&status=1&start={$$dName}&end=$now&test=0");
}
$this->assign( $aName, $$aName );
}
hab in dashboard.tpl das eingefügt: <tr>
<td><strong>{ts}Privatspenden{/ts}</strong></td>
<td class="label">{if NOT $privateToDate.Valid.amount}{ts}(n/a){/ts}{else}{$privateToDate.Valid.amount}{/if}</td>
<td class="label">{$privateToDate.Valid.count}</td>
<td><a href="{$privateToDate.Valid.url}">{ts}view details{/ts}...</a></td>
</tr>
funktioniert jedenfalls nicht, dass mir dann die Privatspenden des aktuellen Monats angezeigt werden. es liefert mir jetzt die Summe aller Spenden in allen Jahren. Any ideas? danke conte
Bearbeitet von nicolas conte am 23.03.2011, 12:47
|
watchout
Legendundead
|
Du kannst nicht erwarten einfach einer Funktion ein zusätzliches Argument zu übergeben und das funktioniert dann. Da muss man schon auch den Code noch ändern.
|
nicolas conte
Here to stay
|
Du kannst nicht erwarten einfach einer Funktion ein zusätzliches Argument zu übergeben und das funktioniert dann. Da muss man schon auch den Code noch ändern. du kannst nicht erwarten, dass mir das weiter hilft. ![:)](/images/smilies/smile.gif) conte
|
watchout
Legendundead
|
du kannst nicht erwarten, dass mir das weiter hilft. ![:)](/images/smilies/smile.gif)
conte Also suchst du eigentlich keine Hilfe sondern wen der das für dich macht, oder?
|
Nico
former person of interest
|
er braucht wohl ein php-tut zum besseren verständnis, vielleicht reicht auch die php-doku.
|
bensh
Addicted
|
du kannst nicht erwarten, dass mir das weiter hilft. ![:)](/images/smilies/smile.gif)
conte Es gibt irgendwo eine Liste in der stehen die Funktionen. In ca. der Form: function functionenname(var1,var2,var3) { FUNKTION } Da gibts eben die eine, die kopierst du, bennenst sie um und fügst eben ein varX oder so dazu. Dann musst du noch die Funktion ansich umschreiben so dass sie tut was du willst.
|
nicolas conte
Here to stay
|
Also suchst du eigentlich keine Hilfe sondern wen der das für dich macht, oder? ganz und gar nicht. ich habe ja schon einiges probiert, aber wie gesagt, hab ich nicht sonderlich viel ahnung von php in der file dashboard.php werden eben die werte berechnet und ich glaube mit ein paar änderungen, sollte ich meine wünsche realisieren können, aber irgendwo happerts noch. danke mfg conte
|
mat
AdministratorLegends never die
|
Du wirst dich genauer in PHP einarbeiten müssen. So gerne dir einer von uns helfen möchte, es wird wenig bringen, wenn du die Änderungen nicht verstehst. Du hast ja scheinbar eine funktionierende Code-Basis ... experimentiere damit herum und du wirst sehen, dass alles seinen Grund hat. Die PHP-Dokumentation ist sehr benutzerfreundlich und sorgt für ausreichend Informationen, ohne eine Suchmaschine anwerfen zu müssen.
|
nicolas conte
Here to stay
|
hallo,
danke für die antworten. ich sehe schon, dass ich dies wahrscheinlich nicht hinbekommen werde.
könnte das jemand von euch, natürlich gegen bezahlung, übernehmen? wieviel arbeitsaufwand ist das ungefähr?
mfg conte
Bearbeitet von nicolas conte am 29.03.2011, 11:05
|
nicolas conte
Here to stay
|
up
|
Paxi
Overclocking Team Member
|
check your pm^^
|